Dockerfile
Rama main · réplica de lectura del repositorio original.
# 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"]