bugfix:修复cicd

This commit is contained in:
2026-09-12 10:00:53 +08:00
parent 4e0902dc12
commit 646fd99887
3 changed files with 45 additions and 0 deletions
+1
View File
@@ -48,6 +48,7 @@ jobs:
- name: 构建并推送迁移镜像
run: |
docker build \
--build-arg GOPROXY=https://goproxy.cn,direct \
-f scripts/dockerfile/Dockerfile.migrate \
-t "$IMAGE:$MIGRATE_TAG" \
.
+1
View File
@@ -52,6 +52,7 @@ jobs:
- name: 构建并推送迁移镜像
run: |
docker build \
--build-arg GOPROXY=https://goproxy.cn,direct \
-f scripts/dockerfile/Dockerfile.migrate \
-t "$IMAGE:$MIGRATE_TAG" \
.
+43
View File
@@ -0,0 +1,43 @@
# 迁移镜像:只携带 Go 工具链与源码,构建期不产出二进制。
# 真正的编译发生在容器启动时(go run),因此镜像内保留完整源码与模块缓存。
ARG GO_VERSION=1.27
FROM golang:${GO_VERSION}-alpine
# Go 模块代理:默认官方代理;国内或受限网络可覆盖:
# --build-arg GOPROXY=https://goproxy.cn,direct
ARG GOPROXY=https://proxy.golang.org,direct
ENV GOPROXY=${GOPROXY}
# alpine 为 musl libc,关闭 CGO 避免编译期依赖 gcc;二进制为纯静态。
ENV CGO_ENABLED=0
ENV TZ=Asia/Shanghai
# ca-certificates:MySQL 启用 TLS 时需要根证书;tzdata:配合 TZ 输出本地时区日志。
RUN apk add --no-cache ca-certificates tzdata
# 工作目录必须是 /app:setting 通过 viper 的 AddConfigPath("configs/") 定位配置,
# 该路径相对工作目录解析,配置须挂载到 /app/configs/config.yaml。
WORKDIR /app
# 先只复制依赖清单,下载模块;源码未变动时复用这一层缓存。
COPY go.mod go.sum ./
RUN go mod download
# 源码进入镜像。迁移脚本已由 pkg/migration 通过 go:embed 打包,无需单独 COPY sql 文件。
COPY . .
# configs/:配置挂载点(config.yaml 含密钥,由 .dockerignore 排除,不进镜像层)。
RUN mkdir -p /app/configs
# 预热 Go 构建缓存,缩短容器启动后 go run 的等待时间。
# 这一步不产出任何二进制;失败也不影响镜像构建(|| true)。
# 缓存目录为默认的 /root/.cache/go-build,可挂载卷在多次运行间复用。
RUN go build -o /dev/null ./cmd/migrate || true
# 用法:
# docker run --rm --network host \
# -v <宿主目录>/configs:/app/configs \
# -v <缓存卷>:/root/.cache/go-build \
# <image> up|down|steps N|version|force V
ENTRYPOINT ["go", "run", "./cmd/migrate"]