FROM golang:1.25.5-trixie AS builder ENV GOCACHE=/tmp/go-build \ GOPROXY=https://proxy.golang.org,direct WORKDIR /src COPY go.mod ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 go build -o /bin/geoip ./cmd/server && \ CGO_ENABLED=0 go build -o /bin/geoip-loader ./cmd/loader && \ CGO_ENABLED=0 go build -o /bin/user-program-import ./cmd/user_program_import && \ CGO_ENABLED=0 go build -o /bin/user-program-dump ./cmd/user_program_dump && \ CGO_ENABLED=0 go build -o /bin/user-program-sync ./cmd/user_program_sync FROM debian:trixie-slim RUN useradd --create-home --shell /usr/sbin/nologin appuser WORKDIR /app COPY --from=builder /bin/geoip /usr/local/bin/geoip COPY --from=builder /bin/geoip-loader /usr/local/bin/geoip-loader COPY --from=builder /bin/user-program-import /usr/local/bin/user-program-import COPY --from=builder /bin/user-program-dump /usr/local/bin/user-program-dump COPY --from=builder /bin/user-program-sync /usr/local/bin/user-program-sync COPY initial_data /app/initial_data RUN mkdir -p /app/update_data ENV GEOIP_DB_PATH=/app/initial_data/GeoLite2-City.mmdb USER appuser EXPOSE 8080 CMD ["geoip"]