# syntax=docker/dockerfile:1 FROM golang:1.27.3-alpine3.24 AS builder RUN printf '%s\n' \ 'https://mirror5.krfoss.org/alpine/v3.24/main' \ 'https://mirror5.krfoss.org/alpine/v3.24/community' \ > /etc/apk/repositories \ && apk update \ && apk upgrade --no-cache \ && apk add --no-cache ca-certificates tzdata WORKDIR /src ARG VERSION=development ARG COMMIT=unknown COPY go.mod go.sum ./ RUN go mod download && go mod verify COPY cmd ./cmd COPY internal ./internal RUN CGO_ENABLED=0 GOOS=linux go build -mod=readonly -trimpath -ldflags="-s -w -X main.version=${VERSION} -X main.commit=${COMMIT}" -o /out/pastebox ./cmd/server FROM alpine:3.24.2 RUN printf '%s\n' \ 'https://mirror5.krfoss.org/alpine/v3.24/main' \ 'https://mirror5.krfoss.org/alpine/v3.24/community' \ > /etc/apk/repositories \ && apk update \ && apk upgrade --no-cache \ && apk add --no-cache ca-certificates tzdata su-exec \ && addgroup -S pastebox \ && adduser -S -G pastebox pastebox WORKDIR /app COPY --from=builder /out/pastebox /usr/local/bin/pastebox COPY templates ./templates COPY locales ./locales COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN chmod +x /usr/local/bin/docker-entrypoint.sh ENV LISTEN_ADDR=:8080 ENV DATA_DIR=/paste-data ENV EXPIRE_DAYS=30 ENV LANGUAGE=en ENV TZ=Asia/Seoul EXPOSE 8080 ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] CMD ["/usr/local/bin/pastebox"]