45 lines
1.4 KiB
Docker
45 lines
1.4 KiB
Docker
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
|
|
|
|
ENV TZ=Asia/Seoul
|
|
|
|
RUN groupadd -g ${APP_GID} appuser && \
|
|
useradd --create-home --shell /usr/sbin/nologin --uid ${APP_UID} --gid ${APP_GID} appuser
|
|
|
|
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone
|
|
|
|
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"]
|