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 FROM debian:trixie-slim RUN apt-get update && \ apt-get install -y --no-install-recommends mysql-client && \ rm -rf /var/lib/apt/lists/* 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 initial_data /app/initial_data COPY scripts /app/scripts RUN mkdir -p /app/update_data /app/log && \ chmod 0755 /app/scripts/dump_and_import.sh && \ chmod -R 0755 /app/scripts ENV GEOIP_DB_PATH=/app/initial_data/GeoLite2-City.mmdb USER appuser EXPOSE 8080 CMD ["geoip"]