fix: 统一前端Harbor镜像发布与拉取部署

This commit is contained in:
Yvan
2026-11-05 13:08:56 +08:00
parent 5f6e893457
commit af2a2a44b3
13 changed files with 201 additions and 61 deletions
+2
View File
@@ -1,5 +1,7 @@
# sw2 Docker 部署
前端镜像统一发布至 `harbor.fuhua91.com/game/sw2:<版本>`。发布服务器需先通过 `docker login harbor.fuhua91.com` 配置 push/pull 权限;脚本在替换容器前完成推送、拉取和摘要校验。前端独立发布入口位于前端仓库 `deploy/`,也支持直接指定 Harbor 版本拉取部署。
沿用 226 服务器 `/www/wwwroot/live.fuhua91.com` 的 Docker 网络、持久化目录和宝塔反向代理结构。使用独立的 `sw2-backend`、`sw2-frontend`、`sw2-net`,兼容服务器现有 Docker 18.06,不依赖 Compose。
## 目录与端口
+12 -1
View File
@@ -8,7 +8,7 @@ MODE="${2:-}"
BASE_DIR=/www/wwwroot/sw2.fuhua91.com
RELEASE="$BASE_DIR/releases/$TAG"
BACKEND_IMAGE="sw2/backend:$TAG"
FRONTEND_IMAGE="sw2/frontend:$TAG"
FRONTEND_IMAGE="harbor.fuhua91.com/game/sw2:$TAG"
NETWORK=sw2-net
NAMES=(sw2-backend sw2-frontend)
@@ -19,6 +19,17 @@ test -f "$RELEASE/frontend/Dockerfile"
docker build --build-arg "VERSION=$TAG" -t "$BACKEND_IMAGE" "$RELEASE/backend"
docker build --build-arg "VERSION=$TAG" -t "$FRONTEND_IMAGE" "$RELEASE/frontend"
registry_args=()
if [[ -s "$BASE_DIR/harbor-docker/config.json" ]]; then registry_args=(--config "$BASE_DIR/harbor-docker"); fi
docker "${registry_args[@]}" push "$FRONTEND_IMAGE"
docker "${registry_args[@]}" pull "$FRONTEND_IMAGE"
frontend_digests=$(docker inspect --format '{{range .RepoDigests}}{{println .}}{{end}}' "$FRONTEND_IMAGE")
frontend_ref=''
while IFS= read -r reference; do
if [[ "$reference" == 'harbor.fuhua91.com/game/sw2@sha256:'* && "${reference##*@}" =~ ^sha256:[a-f0-9]{64}$ ]]; then frontend_ref="$reference"; break; fi
done <<< "$frontend_digests"
[[ -n "$frontend_ref" ]] || { echo 'Harbor frontend digest is missing' >&2; exit 1; }
FRONTEND_IMAGE="$frontend_ref"
docker run --rm "$BACKEND_IMAGE" /app/kratos-admin -h >/dev/null
docker run --rm --add-host sw2-backend:127.0.0.1 "$FRONTEND_IMAGE" nginx -t
if [[ "$MODE" == '--build-only' ]]; then exit 0; fi