feat(deploy): add containerized deployment configuration and scripts
- Add Dockerfile for frontend and server services - Add Docker Compose configs (standard and offline mode) - Add nginx.conf for admin-web service - Add deploy scripts: package.sh (packaging) and load-and-start.sh (startup) - Add deploy/config.yaml, .env.example, and prompts.yml configurations - Add image management design specification doc
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# 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/
|
||||
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
|
||||
ENTRYPOINT ["/app/service"]
|
||||
Reference in New Issue
Block a user