fix(ci): stop pulling Alpine packages from the geo-blocked CDN
CI/CD / CI · Web (tsc) (push) Successful in 1m21s
CI/CD / Deploy · full stack (push) Failing after 15s

The CI server can't reach dl-cdn.alpinelinux.org (TLS error) — only the Nexus
mirror is reachable, and it proxies Docker images, not apk packages.

- frontend: drop `apk add libc6-compat` (vestigial Next.js-template line; the
  deps stage only runs `npm ci` and the build/runtime stages never had it).
- 5 Go services (file/gateway/notification/payment/render): replace
  `apk add ca-certificates tzdata` with copying ca-certificates.crt from the
  golang builder stage + embedding tzdata via `go build -tags timetzdata`.
  No more apk -> no dependency on the Alpine CDN.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-21 17:08:16 +03:30
parent af3c73c560
commit cb11c177a7
6 changed files with 14 additions and 11 deletions
+4 -1
View File
@@ -1,6 +1,9 @@
# ── Stage 1: install dependencies ────────────────────────────────────────────
FROM mirror.soroushasadi.com/node:20-alpine AS deps
RUN apk add --no-cache libc6-compat
# NOTE: do NOT `apk add libc6-compat` here — the deps stage only runs `npm ci`
# (which doesn't need it) and the build/runtime stages omit it anyway. Pulling it
# reaches Alpine's public CDN (dl-cdn.alpinelinux.org), which is unreachable from
# the CI server (only the Nexus mirror is) and fails the whole build.
WORKDIR /app
COPY package.json package-lock.json* ./
+2 -2
View File
@@ -3,10 +3,10 @@ ENV GOPROXY=https://mirror.kargadan.ir/repository/go-group/ GOSUMDB=off
WORKDIR /src
# Dependencies are vendored — build fully offline (proxy.golang.org is geo-blocked from some regions)
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -mod=vendor -o /file-svc ./cmd/server
RUN CGO_ENABLED=0 GOOS=linux go build -tags timetzdata -mod=vendor -o /file-svc ./cmd/server
FROM mirror.soroushasadi.com/alpine:3.20
RUN apk add --no-cache ca-certificates tzdata
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=build /file-svc /file-svc
EXPOSE 8080
ENTRYPOINT ["/file-svc"]
+2 -2
View File
@@ -4,10 +4,10 @@ ENV GOPROXY=https://mirror.kargadan.ir/repository/go-group/ GOSUMDB=off
WORKDIR /app
# Dependencies are vendored — build fully offline (proxy.golang.org is geo-blocked from some regions)
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -mod=vendor -ldflags="-s -w" -o gateway ./cmd/server
RUN CGO_ENABLED=0 GOOS=linux go build -tags timetzdata -mod=vendor -ldflags="-s -w" -o gateway ./cmd/server
FROM mirror.soroushasadi.com/alpine:3.20
RUN apk add --no-cache ca-certificates tzdata
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
WORKDIR /app
COPY --from=builder /app/gateway .
EXPOSE 8080
+2 -2
View File
@@ -3,10 +3,10 @@ ENV GOPROXY=https://mirror.kargadan.ir/repository/go-group/ GOSUMDB=off
WORKDIR /app
# Dependencies are vendored — build fully offline (proxy.golang.org is geo-blocked from some regions)
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -mod=vendor -ldflags="-s -w" -o notification-svc ./cmd/server
RUN CGO_ENABLED=0 GOOS=linux go build -tags timetzdata -mod=vendor -ldflags="-s -w" -o notification-svc ./cmd/server
FROM mirror.soroushasadi.com/alpine:3.20
RUN apk add --no-cache ca-certificates tzdata
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
WORKDIR /app
COPY --from=builder /app/notification-svc .
EXPOSE 8080
+2 -2
View File
@@ -3,10 +3,10 @@ ENV GOPROXY=https://mirror.kargadan.ir/repository/go-group/ GOSUMDB=off
WORKDIR /app
# Dependencies are vendored — build fully offline (proxy.golang.org is geo-blocked from some regions)
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -mod=vendor -ldflags="-s -w" -o payment-svc ./cmd/server
RUN CGO_ENABLED=0 GOOS=linux go build -tags timetzdata -mod=vendor -ldflags="-s -w" -o payment-svc ./cmd/server
FROM mirror.soroushasadi.com/alpine:3.20
RUN apk add --no-cache ca-certificates tzdata
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
WORKDIR /app
COPY --from=builder /app/payment-svc .
EXPOSE 8080
+2 -2
View File
@@ -3,10 +3,10 @@ ENV GOPROXY=https://mirror.kargadan.ir/repository/go-group/ GOSUMDB=off
WORKDIR /app
# Dependencies are vendored — build fully offline (proxy.golang.org is geo-blocked from some regions)
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -mod=vendor -ldflags="-s -w" -o render-svc ./cmd/server
RUN CGO_ENABLED=0 GOOS=linux go build -tags timetzdata -mod=vendor -ldflags="-s -w" -o render-svc ./cmd/server
FROM mirror.soroushasadi.com/alpine:3.20
RUN apk add --no-cache ca-certificates tzdata
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
WORKDIR /app
COPY --from=builder /app/render-svc .
EXPOSE 8080