目录
1、 go-admin Dockerfile
2、docker build go-admin
3、settings.yml
4、go-admin-ui Dockerfile
5、docker build go-admin-ui
6、go-admin.yaml
7、go-admin-ui.yaml
1、 go-admin Dockerfile
# 构建阶段:使用 Go 1.24 版本(支持远程调试)
FROM golang:1.24-alpine AS builder# 配置环境变量(ENV 内部不允许插入注释行,注释需放在 ENV 外部)
# 启用调试符号(保留调试信息):CGO_CFLAGS="-g -O0"、GOFLAGS="-gcflags=all=-N -l"
ENV GOPROXY=https://goproxy.cn/,direct \
GO111MODULE=on \
CGO_ENABLED=1 \
GOOS=linux \
GOARCH=arm64 \
CGO_CFLAGS="-g -O0" \
GOFLAGS="-gcflags=all=-N -l"# 安装编译工具和调试依赖
RUN apk add --no-cache git make gcc g++ musl-dev# 克隆代码并编译(保留调试符号)
RUN git clone https://github.com/go-admin-team/go-admin.git /app && \
cd /app && \
go mod tidy && \
go build -gcflags="all=-N -l" -o go-admin# 运行阶段:使用轻量 Alpine 镜像
FROM alpine:latest# 配置时区
ENV TZ=Asia/Shanghai# 安装运行依赖和调试工具
RUN apk add --no-cache ca-certificates tzdata libc6-compat && \
apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community delve# 创建日志目录和配置目录
RUN mkdir -p /app/config /app/temp/logs && \
chmod -R 777 /app/temp/logs# 复制编译产物和配置文件
COPY --from=builder /app/go-admin /app/
COPY --from=builder /app/config/settings.yml /app/config/settings.yml
COPY settings.yml /app/config/settings.yml# 暴露应用端口和调试端口
EXPOSE 8000
EXPOSE 2345# 工作目录
WORKDIR /app# 启动命令(远程调试)
CMD ["/bin/sh", "-c", "dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./go-admin -- server -c config/settings.yml -a true"]
或者
# 构建阶段:使用 Go 1.24 版本
FROM golang:1.24-alpine AS builder# 配置环境变量
ENV GOPROXY=https://goproxy.cn/,direct \
GO111MODULE=on \
CGO_ENABLED=1 \
GOOS=linux \
GOARCH=arm64 \
CGO_CFLAGS="-g -O0" \
GOFLAGS="-gcflags=all=-N"# 安装编译工具和依赖
RUN apk add --no-cache git make gcc g++ musl-dev unzip# 创建应用目录
RUN mkdir -p /app /tmp/build# 复制本地文件(优先使用本地zip包)
COPY go-admin.zip* /tmp/build/
COPY settings.yml* /tmp/build/# 处理源码:优先使用本地zip,否则从git拉取
RUN if [ -f "/tmp/build/go-admin.zip" ]; then \
unzip /tmp/build/go-admin.zip -d /app && \
# 处理压缩包内可能的目录结构差异
if [ -d "/app/go-admin" ] || [ -d "/app/go-admin-master" ]; then \
SRC_DIR="/app/go-admin" && \
if [ -d "/app/go-admin-master" ]; then SRC_DIR="/app/go-admin-master"; fi && \
find $SRC_DIR -maxdepth 1 -exec mv {} /app \; && \
rm -rf $SRC_DIR; \
fi; \
else \
git clone https://github.com/go-admin-team/go-admin.git /app; \
fi && \
cd /app && \
go mod tidy && \
go build -gcflags="all=-N" -o go-admin# 运行阶段:使用轻量Alpine镜像
FROM alpine:latest# 配置环境变量
ENV TZ=Asia/Shanghai \
APP_PORT=8000 \
LOG_PATH=/app/temp/logs \
# 新增调试开关(true=启用dlv调试,false=正常启动)
ENABLE_DEBUG=false# 安装运行依赖
RUN apk add --no-cache ca-certificates tzdata libc6-compat gcompat &