Files
geo/server/Dockerfile
T
root 22163edbee
CI / Backend (push) Failing after 8m3s
CI / Deployment Config (push) Successful in 6s
CI / Frontend (push) Successful in 4m4s
chore(ci): add offline container deployment pipeline
2026-04-30 23:29:15 +08:00

45 lines
1.4 KiB
Docker

# syntax=docker/dockerfile:1
# ─── Stage 1: Build Go binaries ───────────────────────────────────────────────
FROM --platform=$BUILDPLATFORM golang:1.23-alpine AS builder
ARG SERVICE=tenant-api
ARG TARGETOS=linux
ARG TARGETARCH=amd64
RUN apk --no-cache add ca-certificates git
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
go build -trimpath -ldflags="-s -w" \
-o /bin/service ./cmd/${SERVICE}
# ─── Stage 2: Migration image (bundles SQL files + migrate binary) ─────────────
FROM migrate/migrate:v4.19.1 AS migrate-tool
FROM alpine:3.19 AS migrate
RUN apk --no-cache add ca-certificates
COPY --from=migrate-tool /usr/local/bin/migrate /usr/local/bin/migrate
COPY migrations/ /migrations/
COPY migrations_monitoring/ /migrations_monitoring/
COPY migrations_ops/ /migrations_ops/
ENTRYPOINT ["/usr/local/bin/migrate"]
# ─── Stage 3: Runtime image ────────────────────────────────────────────────────
FROM alpine:3.19 AS runtime
RUN apk --no-cache add ca-certificates tzdata
WORKDIR /app
COPY --from=builder /bin/service /app/service
COPY configs/ /app/configs/
EXPOSE 8080 8081
ENTRYPOINT ["/app/service"]