fix: 修复CI/CD镜像源配置和后端CGO支持
Some checks failed
部署前端网站 / 🧪 测试和构建 (push) Has been cancelled
部署前端网站 / 🚀 部署到生产环境 (push) Has been cancelled
部署管理后台 / 🚀 部署到生产环境 (push) Has been cancelled
部署管理后台 / 🔄 回滚部署 (push) Has been cancelled
部署管理后台 / 🔒 安全扫描 (push) Has been cancelled
部署管理后台 / 🧪 测试和构建 (push) Has been cancelled
部署后端服务 / 🚀 构建并部署 (push) Failing after 1m52s
Some checks failed
部署前端网站 / 🧪 测试和构建 (push) Has been cancelled
部署前端网站 / 🚀 部署到生产环境 (push) Has been cancelled
部署管理后台 / 🚀 部署到生产环境 (push) Has been cancelled
部署管理后台 / 🔄 回滚部署 (push) Has been cancelled
部署管理后台 / 🔒 安全扫描 (push) Has been cancelled
部署管理后台 / 🧪 测试和构建 (push) Has been cancelled
部署后端服务 / 🚀 构建并部署 (push) Failing after 1m52s
- 为前端和管理后台CI/CD添加阿里云镜像源替换 - 修复后端Dockerfile的CGO配置以支持SQLite - 将运行时镜像从scratch改为alpine以支持动态链接
This commit is contained in:
@ -99,6 +99,12 @@ jobs:
|
|||||||
- name: 📊 压缩构建产物
|
- name: 📊 压缩构建产物
|
||||||
working-directory: ./admin
|
working-directory: ./admin
|
||||||
run: |
|
run: |
|
||||||
|
# 使用国内镜像源安装压缩工具
|
||||||
|
echo "🔄 使用国内镜像源..."
|
||||||
|
sudo sed -i 's|http://.*.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
|
||||||
|
sudo apt-get update -o Acquire::Retries=3 -o Acquire::http::Timeout=30
|
||||||
|
sudo apt-get install -y tar gzip
|
||||||
|
|
||||||
tar -czf admin-dist.tar.gz -C dist .
|
tar -czf admin-dist.tar.gz -C dist .
|
||||||
echo "压缩完成: $(ls -lh admin-dist.tar.gz)"
|
echo "压缩完成: $(ls -lh admin-dist.tar.gz)"
|
||||||
|
|
||||||
|
|||||||
@ -76,8 +76,11 @@ jobs:
|
|||||||
|
|
||||||
- name: 🚀 部署到服务器
|
- name: 🚀 部署到服务器
|
||||||
run: |
|
run: |
|
||||||
# 安装部署工具
|
# 使用国内镜像源安装部署工具
|
||||||
sudo apt-get update && sudo apt-get install -y openssh-client rsync sshpass
|
echo "🔄 使用国内镜像源..."
|
||||||
|
sudo sed -i 's|http://.*.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
|
||||||
|
sudo apt-get update -o Acquire::Retries=3 -o Acquire::http::Timeout=30
|
||||||
|
sudo apt-get install -y openssh-client rsync sshpass
|
||||||
|
|
||||||
# 设置 SSH 环境
|
# 设置 SSH 环境
|
||||||
export SSHPASS=${{ secrets.ALIYUN_PWD }}
|
export SSHPASS=${{ secrets.ALIYUN_PWD }}
|
||||||
|
|||||||
@ -10,8 +10,8 @@ WORKDIR /app
|
|||||||
# 配置镜像源加速
|
# 配置镜像源加速
|
||||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
||||||
|
|
||||||
# 安装构建依赖
|
# 安装构建依赖 (包含CGO所需的gcc和sqlite3开发库)
|
||||||
RUN apk add --no-cache git ca-certificates tzdata
|
RUN apk add --no-cache git ca-certificates tzdata gcc musl-dev sqlite-dev
|
||||||
|
|
||||||
# 配置 Go 模块代理
|
# 配置 Go 模块代理
|
||||||
ENV GOPROXY=https://goproxy.cn,direct
|
ENV GOPROXY=https://goproxy.cn,direct
|
||||||
@ -24,30 +24,34 @@ RUN go mod download
|
|||||||
# 复制源代码
|
# 复制源代码
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# 构建应用程序
|
# 构建应用程序 (启用CGO支持SQLite)
|
||||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
|
RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build \
|
||||||
-ldflags='-w -s -extldflags "-static"' \
|
-ldflags='-w -s' \
|
||||||
-a -installsuffix cgo \
|
|
||||||
-o photography-api \
|
-o photography-api \
|
||||||
./cmd/api/main.go
|
./cmd/api/main.go
|
||||||
|
|
||||||
# 构建迁移工具
|
# 构建迁移工具 (启用CGO支持SQLite)
|
||||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
|
RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build \
|
||||||
-ldflags='-w -s -extldflags "-static"' \
|
-ldflags='-w -s' \
|
||||||
-a -installsuffix cgo \
|
|
||||||
-o migrate \
|
-o migrate \
|
||||||
./cmd/migrate/main.go
|
./cmd/migrate/main.go
|
||||||
|
|
||||||
# Stage 2: 运行阶段
|
# Stage 2: 运行阶段
|
||||||
FROM scratch
|
FROM alpine:3.19
|
||||||
|
|
||||||
# 从builder阶段复制时区数据和CA证书
|
# 配置镜像源加速
|
||||||
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
||||||
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
|
|
||||||
|
|
||||||
# 复制编译好的二进制文件
|
# 安装运行时依赖 (包含SQLite动态库)
|
||||||
COPY --from=builder /app/photography-api /photography-api
|
RUN apk add --no-cache ca-certificates tzdata sqlite
|
||||||
COPY --from=builder /app/migrate /migrate
|
|
||||||
|
# 创建非root用户
|
||||||
|
RUN addgroup -g 1001 -S appgroup && \
|
||||||
|
adduser -S appuser -G appgroup -u 1001
|
||||||
|
|
||||||
|
# 从builder阶段复制编译好的二进制文件
|
||||||
|
COPY --from=builder /app/photography-api /usr/local/bin/photography-api
|
||||||
|
COPY --from=builder /app/migrate /usr/local/bin/migrate
|
||||||
|
|
||||||
# 复制配置文件和脚本
|
# 复制配置文件和脚本
|
||||||
COPY --from=builder /app/configs /configs
|
COPY --from=builder /app/configs /configs
|
||||||
@ -55,21 +59,25 @@ COPY --from=builder /app/scripts /scripts
|
|||||||
COPY --from=builder /app/pkg/migration /pkg/migration
|
COPY --from=builder /app/pkg/migration /pkg/migration
|
||||||
COPY --from=builder /app/etc /etc
|
COPY --from=builder /app/etc /etc
|
||||||
|
|
||||||
|
# 设置目录权限
|
||||||
|
RUN mkdir -p /app && \
|
||||||
|
chown -R appuser:appgroup /app
|
||||||
|
|
||||||
# 设置时区
|
# 设置时区
|
||||||
ENV TZ=Asia/Shanghai
|
ENV TZ=Asia/Shanghai
|
||||||
|
|
||||||
# 创建工作目录
|
# 创建工作目录
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# 创建非root用户 (在scratch镜像中需要手动创建)
|
# 使用非root用户运行
|
||||||
USER 65534:65534
|
USER appuser:appgroup
|
||||||
|
|
||||||
# 暴露端口
|
# 暴露端口
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
# 健康检查
|
# 健康检查
|
||||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||||
CMD ["/photography-api", "--health-check"]
|
CMD ["/usr/local/bin/photography-api", "--health-check"]
|
||||||
|
|
||||||
# 启动应用
|
# 启动应用
|
||||||
ENTRYPOINT ["/photography-api"]
|
ENTRYPOINT ["/usr/local/bin/photography-api"]
|
||||||
Reference in New Issue
Block a user