# syntax=docker/dockerfile:1.7 # # Local-dev image for the gateway service. Mirrors `gateway/Dockerfile` # (the integration/production image) but switches the runtime stage to # alpine so docker-compose healthchecks can shell out to `wget`. # # Build via the local-dev compose: `make -C tools/local-dev up`. The # build context is the repository root. FROM golang:1.26.2-alpine AS builder WORKDIR /src ENV CGO_ENABLED=0 GOFLAGS=-trimpath COPY pkg/calc/ ./pkg/calc/ COPY pkg/cronutil/ ./pkg/cronutil/ COPY pkg/error/ ./pkg/error/ COPY pkg/geoip/ ./pkg/geoip/ COPY pkg/model/ ./pkg/model/ COPY pkg/postgres/ ./pkg/postgres/ COPY pkg/redisconn/ ./pkg/redisconn/ COPY pkg/schema/ ./pkg/schema/ COPY pkg/transcoder/ ./pkg/transcoder/ COPY pkg/util/ ./pkg/util/ COPY ui/core/ ./ui/core/ COPY backend/ ./backend/ COPY gateway/ ./gateway/ RUN <<'EOF' cat > go.work go 1.26.2 use ( ./backend ./gateway ./pkg/calc ./pkg/cronutil ./pkg/error ./pkg/geoip ./pkg/model ./pkg/postgres ./pkg/redisconn ./pkg/schema ./pkg/transcoder ./pkg/util ./ui/core ) replace ( galaxy/calc v0.0.0 => ./pkg/calc galaxy/cronutil v0.0.0 => ./pkg/cronutil galaxy/error v0.0.0 => ./pkg/error galaxy/geoip v0.0.0 => ./pkg/geoip galaxy/model v0.0.0 => ./pkg/model galaxy/postgres v0.0.0 => ./pkg/postgres galaxy/redisconn v0.0.0 => ./pkg/redisconn galaxy/schema v0.0.0 => ./pkg/schema galaxy/transcoder v0.0.0 => ./pkg/transcoder galaxy/util v0.0.0 => ./pkg/util galaxy/core v0.0.0 => ./ui/core ) EOF RUN --mount=type=cache,target=/root/.cache/go-build \ --mount=type=cache,target=/go/pkg/mod \ go build -o /out/gateway ./gateway/cmd/gateway FROM alpine:3.20 AS runtime LABEL org.opencontainers.image.title="galaxy-gateway-local-dev" RUN apk add --no-cache wget ca-certificates EXPOSE 8080 EXPOSE 9090 COPY --from=builder /out/gateway /usr/local/bin/gateway ENTRYPOINT ["/usr/local/bin/gateway"]