c091ad7aed
Stand up an internal ops-api service with operator account, auth, and audit log subsystems backed by a dedicated migrations_ops migration set. Wire Makefile targets and the migrate Dockerfile stage so the new schema ships alongside the existing tenant + monitoring databases. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
43 lines
1.3 KiB
Docker
43 lines
1.3 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
# ─── Stage 1: Build Go binaries ───────────────────────────────────────────────
|
|
FROM golang:1.22-alpine AS builder
|
|
|
|
ARG SERVICE=tenant-api
|
|
|
|
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=linux GOARCH=amd64 \
|
|
go build -trimpath -ldflags="-s -w" \
|
|
-o /bin/service ./cmd/${SERVICE}
|
|
|
|
# ─── Stage 2: Migration image (bundles SQL files + migrate binary) ─────────────
|
|
FROM migrate/migrate:v4.18.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"]
|