Ctrl K
ComunidadGuías…

Dockerfile

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# 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"]