mirror of
https://github.com/go-gitea/gitea.git
synced 2025-11-22 23:52:43 +01:00
It's not required and grows over time. Also exclude containerfiles from the copy so changes in them won't trigger layer invalidation if it's not needed
82 lines
2.0 KiB
Docker
82 lines
2.0 KiB
Docker
# syntax=docker/dockerfile:1
|
|
# Build stage
|
|
FROM docker.io/library/golang:1.25-alpine3.22 AS build-env
|
|
|
|
ARG GOPROXY=direct
|
|
|
|
ARG GITEA_VERSION
|
|
ARG TAGS="sqlite sqlite_unlock_notify"
|
|
ENV TAGS="bindata timetzdata $TAGS"
|
|
ARG CGO_EXTRA_CFLAGS
|
|
|
|
# Build deps
|
|
RUN apk --no-cache add \
|
|
build-base \
|
|
git \
|
|
nodejs \
|
|
pnpm
|
|
|
|
WORKDIR ${GOPATH}/src/code.gitea.io/gitea
|
|
COPY --exclude=.git/ . .
|
|
|
|
# Checkout version if set
|
|
RUN --mount=type=cache,target=/go/pkg/mod \
|
|
--mount=type=cache,target="/root/.cache/go-build" \
|
|
--mount=type=cache,target=/root/.local/share/pnpm/store \
|
|
--mount=type=bind,source=".git/",target=".git/" \
|
|
if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \
|
|
&& make
|
|
|
|
# Begin env-to-ini build
|
|
RUN --mount=type=cache,target=/go/pkg/mod \
|
|
--mount=type=cache,target="/root/.cache/go-build" \
|
|
go build contrib/environment-to-ini/environment-to-ini.go
|
|
|
|
FROM docker.io/library/alpine:3.22 AS gitea-rootless
|
|
|
|
EXPOSE 2222 3000
|
|
|
|
RUN apk --no-cache add \
|
|
bash \
|
|
ca-certificates \
|
|
dumb-init \
|
|
gettext \
|
|
git \
|
|
curl \
|
|
gnupg \
|
|
openssh-keygen
|
|
|
|
RUN addgroup \
|
|
-S -g 1000 \
|
|
git && \
|
|
adduser \
|
|
-S -H -D \
|
|
-h /var/lib/gitea/git \
|
|
-s /bin/bash \
|
|
-u 1000 \
|
|
-G git \
|
|
git
|
|
|
|
RUN mkdir -p /var/lib/gitea /etc/gitea
|
|
RUN chown git:git /var/lib/gitea /etc/gitea
|
|
|
|
COPY docker/rootless /
|
|
COPY --from=build-env --chmod=755 --chown=root:root /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
|
|
COPY --from=build-env --chmod=755 --chown=root:root /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini
|
|
|
|
# git:git
|
|
USER 1000:1000
|
|
ENV GITEA_WORK_DIR=/var/lib/gitea
|
|
ENV GITEA_CUSTOM=/var/lib/gitea/custom
|
|
ENV GITEA_TEMP=/tmp/gitea
|
|
ENV TMPDIR=/tmp/gitea
|
|
|
|
# TODO add to docs the ability to define the ini to load (useful to test and revert a config)
|
|
ENV GITEA_APP_INI=/etc/gitea/app.ini
|
|
ENV HOME="/var/lib/gitea/git"
|
|
VOLUME ["/var/lib/gitea", "/etc/gitea"]
|
|
WORKDIR /var/lib/gitea
|
|
|
|
ENTRYPOINT ["/usr/bin/dumb-init", "--", "/usr/local/bin/docker-entrypoint.sh"]
|
|
CMD []
|