mirror of
https://github.com/go-gitea/gitea.git
synced 2025-11-08 16:37:19 -05:00
add mount cache directives to container builds, which speeds up local builds bypassing node and go package download entirely on second build and caching go compilation. drop job level split on regular/rootless, which allows to reuse the previously made stage for rootless, skipping duplicate builds in CI. --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
82 lines
1.9 KiB
Docker
82 lines
1.9 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
|
|
# See the comments in Dockerfile
|
|
COPY --exclude=.git/ . .
|
|
|
|
# Build gitea, .git mount is required for version data
|
|
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/" \
|
|
make
|
|
|
|
COPY docker/rootless /tmp/local
|
|
|
|
# Set permissions for builds that made under windows which strips the executable bit from file
|
|
RUN chmod 755 /tmp/local/usr/local/bin/* \
|
|
/go/src/code.gitea.io/gitea/gitea
|
|
|
|
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 --from=build-env /tmp/local /
|
|
COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
|
|
|
|
# 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 []
|