Files
EasyGoAdmin_GoFrame_EleVue/.jenkins/Dockerfile
T
2026-10-20 12:44:02 +08:00

63 lines
2.5 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# +======================================================================
# | 模块: Jenkins 镜像构建文件
# | 说明: CI 场景将已编译的 Go 二进制打包为应用镜像(编译在 Jenkins 侧完成,镜像内不编译)
# | 构建上下文为项目根目录,由 Jenkins 流水线注入构建参数,例如:
# | docker build -f .jenkins/Dockerfile \
# | --build-arg VAR_BASE_IMAGE=alpine:3.22 \
# | --build-arg VAR_GOFILE=admin-server \
# | --build-arg VAR_GOFILE_PATH=bin/admin-server \
# | --build-arg VAR_PORT=8000 \
# | -t easygoadmin:$TAG .
# +======================================================================
# 基础镜像地址(如 alpine:3.22,可指向公司私服预置镜像)
ARG VAR_BASE_IMAGE
# 基础镜像
FROM ${VAR_BASE_IMAGE}
# 镜像作者
LABEL MAINTAINER="easygoadmin@163.com"
# 端口参数(后端监听端口,与 manifest/config/config.yaml 的 server.address 一致)
ARG VAR_PORT
# 二进制文件名参数(不含路径,如 admin-server)
ARG VAR_GOFILE
# 二进制文件路径参数(Jenkins 编译产物在构建上下文中的相对路径,如 bin/admin-server)
ARG VAR_GOFILE_PATH
# 设置端口
ENV PORT=${VAR_PORT}
# 设置二进制文件名
ENV GOFILE=${VAR_GOFILE}
# 设置时区(日志落盘与 gcron 定时任务依赖系统时区)
ENV TZ=Asia/Shanghai
# 暴露端口
EXPOSE ${PORT}
# 创建工作区
RUN mkdir -p /opt/apps
# 设置工作区
WORKDIR /opt/apps
# 拷贝运行时资产(四件缺一不可,路径相对项目根)
# manifest/config 运行时配置(敏感项运行时经 GF_GENV_ 环境变量覆盖,不改镜像内文件)
# manifest/data ip2region.xdb 归属地库
# resource 验证码字体、swagger 页面等静态资源
# templates 代码生成器模板(tool 域运行时读取)
COPY manifest ./manifest
COPY resource ./resource
COPY templates ./templates
# 拷贝 Jenkins 编译产物(Go 静态编译 CGO_ENABLED=0,直接可执行)
# 编译建议:CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -o bin/admin-server main.go
COPY ${VAR_GOFILE_PATH} ./
# 启动命令
# ${GOFILE} 为编译产物文件名,如 admin-server
# 配置覆盖示例(Jenkins 部署阶段注入,勿写死镜像):
# -e GF_GENV_DATABASE_DEFAULT_LINK="mysql:...@tcp(host:3306)/easygoadmin.goframe.elevue?..."
# -e GF_GENV_REDIS_DEFAULT_ADDRESS="host:6379"
# -e GF_GENV_FILE_UPLOADDIR="/data/upload" # 容器内必须覆盖(配置默认为开发机绝对路径)
CMD ["sh", "-c", "./${GOFILE}"]