diff --git a/.env.example b/.env.example index 8e05688..3b88a8f 100644 --- a/.env.example +++ b/.env.example @@ -13,3 +13,9 @@ GO_BUILDER_IMAGE=docker.m.daocloud.io/library/golang:1.26-alpine BACKEND_RUNTIME_IMAGE=docker.m.daocloud.io/library/alpine:3.22 NODE_BUILDER_IMAGE=docker.m.daocloud.io/library/node:22-alpine CADDY_BASE_IMAGE=docker.m.daocloud.io/library/caddy:2-alpine + +# Docker 构建阶段包管理加速源 +GOPROXY=https://goproxy.cn,direct +GOSUMDB=sum.golang.google.cn +ALPINE_MIRROR=https://mirrors.aliyun.com/alpine +NPM_REGISTRY=https://registry.npmmirror.com diff --git a/Dockerfile.backend b/Dockerfile.backend index db4bcb3..1f0bfd5 100644 --- a/Dockerfile.backend +++ b/Dockerfile.backend @@ -1,8 +1,16 @@ 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 +ENV GOPROXY=${GOPROXY} +ENV GOSUMDB=${GOSUMDB} + WORKDIR /app # 复制 Go 依赖文件 / Copy Go dependency files @@ -18,7 +26,9 @@ RUN CGO_ENABLED=0 GOOS=linux go build -o /server ./cmd/server # 最终运行镜像 / Runtime image FROM ${BACKEND_RUNTIME_IMAGE} -RUN apk --no-cache add ca-certificates tzdata curl +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 diff --git a/Dockerfile.caddy b/Dockerfile.caddy index d6b47d3..4ec6019 100644 --- a/Dockerfile.caddy +++ b/Dockerfile.caddy @@ -1,13 +1,17 @@ ARG NODE_BUILDER_IMAGE=docker.m.daocloud.io/library/node:22-alpine ARG CADDY_BASE_IMAGE=docker.m.daocloud.io/library/caddy:2-alpine +ARG NPM_REGISTRY=https://registry.npmmirror.com FROM ${NODE_BUILDER_IMAGE} AS frontend-builder +ARG NPM_REGISTRY + WORKDIR /app/frontend # 先安装依赖,利用 Docker 层缓存 / Install dependencies first for Docker cache COPY frontend/package.json frontend/package-lock.json ./ -RUN npm ci +RUN npm config set registry "${NPM_REGISTRY}" \ + && npm ci COPY frontend ./ RUN npm run build diff --git a/docker-compose.yml b/docker-compose.yml index 64cccac..c07a68a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,9 @@ services: args: GO_BUILDER_IMAGE: ${GO_BUILDER_IMAGE:-docker.m.daocloud.io/library/golang:1.26-alpine} BACKEND_RUNTIME_IMAGE: ${BACKEND_RUNTIME_IMAGE:-docker.m.daocloud.io/library/alpine:3.22} + GOPROXY: ${GOPROXY:-https://goproxy.cn,direct} + GOSUMDB: ${GOSUMDB:-sum.golang.google.cn} + ALPINE_MIRROR: ${ALPINE_MIRROR:-https://mirrors.aliyun.com/alpine} image: affiliate-backend:latest ports: - "8080:8080" @@ -35,6 +38,7 @@ services: args: NODE_BUILDER_IMAGE: ${NODE_BUILDER_IMAGE:-docker.m.daocloud.io/library/node:22-alpine} CADDY_BASE_IMAGE: ${CADDY_BASE_IMAGE:-docker.m.daocloud.io/library/caddy:2-alpine} + NPM_REGISTRY: ${NPM_REGISTRY:-https://registry.npmmirror.com} image: affiliate-caddy:latest ports: - "80:80"