Files
affiliate_dash/Dockerfile.backend
T
2026-07-22 13:25:36 +08:00

46 lines
1.4 KiB
Docker

ARG GO_BUILDER_IMAGE=docker.m.daocloud.io/library/golang:1.26-alpine
ARG BACKEND_RUNTIME_IMAGE=docker.m.daocloud.io/library/alpine:3.22
ARG GOPROXY=https://goproxy.cn,direct
ARG GOSUMDB=sum.golang.google.cn
ARG ALPINE_MIRROR=https://mirrors.aliyun.com/alpine
FROM ${GO_BUILDER_IMAGE} AS builder
ARG GOPROXY
ARG GOSUMDB
ARG ALPINE_MIRROR
ENV GOPROXY=${GOPROXY}
ENV GOSUMDB=${GOSUMDB}
WORKDIR /app
# SQLite 驱动依赖 CGO,构建阶段需要 C 编译工具 / SQLite driver needs CGO and a C toolchain
RUN sed -i "s|https://dl-cdn.alpinelinux.org/alpine|${ALPINE_MIRROR}|g; s|http://dl-cdn.alpinelinux.org/alpine|${ALPINE_MIRROR}|g" /etc/apk/repositories \
&& apk --no-cache add build-base
# 复制 Go 依赖文件 / Copy Go dependency files
COPY backend/go.mod backend/go.sum ./
RUN go mod download
COPY backend ./backend
WORKDIR /app/backend
# 构建 Go 二进制文件 / Build Go binary
RUN CGO_ENABLED=1 GOOS=linux go build -ldflags="-linkmode external -extldflags '-static'" -o /server ./cmd/server
# 最终运行镜像 / Runtime image
FROM ${BACKEND_RUNTIME_IMAGE}
ARG ALPINE_MIRROR
RUN sed -i "s|https://dl-cdn.alpinelinux.org/alpine|${ALPINE_MIRROR}|g; s|http://dl-cdn.alpinelinux.org/alpine|${ALPINE_MIRROR}|g" /etc/apk/repositories \
&& apk --no-cache add ca-certificates tzdata curl
WORKDIR /app
COPY --from=builder /server ./server
# 暴露服务端口 / Expose service port
EXPOSE 8080
# 启动服务 / Run server
CMD ["./server"]