bb74e3336e
With the runner in host-mode, compose bind-mount paths resolve to real host paths the Docker daemon can see, so the GeoIP file no longer needs to be baked into the backend image to survive CI. Bring back the bind-mount of `pkg/geoip/test-data/.../mmdb`, matching how local-dev sources it. Image now only carries the backend binary, symmetric with the production `backend/Dockerfile`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
72 lines
1.9 KiB
Docker
72 lines
1.9 KiB
Docker
# syntax=docker/dockerfile:1.7
|
|
#
|
|
# Local-dev image for the backend service. Mirrors the structure of
|
|
# `backend/Dockerfile` (the integration/production image) but switches
|
|
# the runtime stage to alpine so docker-compose healthchecks can shell
|
|
# out to `wget` and the container can run as root for Docker-socket
|
|
# access without needing the production-grade nonroot guarantees.
|
|
#
|
|
# 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/schema/ ./pkg/schema/
|
|
COPY pkg/transcoder/ ./pkg/transcoder/
|
|
COPY pkg/util/ ./pkg/util/
|
|
COPY backend/ ./backend/
|
|
|
|
RUN <<'EOF' cat > go.work
|
|
go 1.26.2
|
|
|
|
use (
|
|
./backend
|
|
./pkg/calc
|
|
./pkg/cronutil
|
|
./pkg/error
|
|
./pkg/geoip
|
|
./pkg/model
|
|
./pkg/postgres
|
|
./pkg/schema
|
|
./pkg/transcoder
|
|
./pkg/util
|
|
)
|
|
|
|
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/schema v0.0.0 => ./pkg/schema
|
|
galaxy/transcoder v0.0.0 => ./pkg/transcoder
|
|
galaxy/util v0.0.0 => ./pkg/util
|
|
)
|
|
EOF
|
|
|
|
RUN --mount=type=cache,target=/root/.cache/go-build \
|
|
--mount=type=cache,target=/go/pkg/mod \
|
|
go build -o /out/backend ./backend/cmd/backend
|
|
|
|
FROM alpine:3.20 AS runtime
|
|
|
|
LABEL org.opencontainers.image.title="galaxy-backend-local-dev"
|
|
|
|
RUN apk add --no-cache wget ca-certificates
|
|
|
|
EXPOSE 8080
|
|
EXPOSE 8081
|
|
|
|
COPY --from=builder /out/backend /usr/local/bin/backend
|
|
|
|
ENTRYPOINT ["/usr/local/bin/backend"]
|