目錄
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 &