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 ARG APP_UID=1000 ARG APP_GID=1000 RUN groupadd -g ${APP_GID} appuser && \ useradd --create-home --shell /usr/sbin/nologin --uid ${APP_UID} --gid ${APP_GID} appuser WORKDIR / 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 /initial_data RUN mkdir -p /update_data /log && \ chown -R ${APP_UID}:${APP_GID} /initial_data /update_data /log ENV GEOIP_DB_PATH=/initial_data/GeoLite2-City.mmdb USER appuser EXPOSE 8080 CMD ["geoip"]