Files
Gogs/Dockerfile.next
2025-11-29 23:01:12 -05:00

49 lines
1.2 KiB
Docker

FROM golang:alpine3.22 AS binarybuilder
RUN apk --no-cache --no-progress add --virtual \
build-deps \
build-base \
git \
linux-pam-dev
WORKDIR /gogs.io/gogs
COPY . .
RUN ./docker/build/install-task.sh
RUN TAGS="cert pam" task build
FROM alpine:3.22
# Create git user and group with fixed UID/GID at build time for better K8s security context support.
# Using 1000:1000 as it's a common non-root UID/GID that works well with most volume permission setups.
ARG GOGS_UID=1000
ARG GOGS_GID=1000
RUN addgroup -g ${GOGS_GID} -S git && \
adduser -u ${GOGS_UID} -G git -H -D -g 'Gogs Git User' -h /data/git -s /bin/sh git
RUN apk --no-cache --no-progress add \
bash \
ca-certificates \
git \
linux-pam \
openssh-keygen
ENV GOGS_CUSTOM=/data/gogs
WORKDIR /app/gogs
COPY --from=binarybuilder /gogs.io/gogs/gogs .
# Create data directories and set ownership
RUN mkdir -p /data/gogs /data/git /backup && \
chown -R git:git /app/gogs /data /backup
# Configure Docker Container
VOLUME ["/data", "/backup"]
EXPOSE 22 3000
HEALTHCHECK CMD (curl -o /dev/null -sS http://localhost:3000/healthcheck) || exit 1
# Run as non-root user by default for better K8s security context support.
USER git:git
ENTRYPOINT ["/app/gogs/gogs"]
CMD ["web"]