gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # Build stage
  2. FROM docker.io/library/golang:1.25-alpine3.22 AS build-env
  3. ARG GOPROXY
  4. ENV GOPROXY=${GOPROXY:-direct}
  5. ARG GITEA_VERSION
  6. ARG TAGS="sqlite sqlite_unlock_notify"
  7. ENV TAGS="bindata timetzdata $TAGS"
  8. ARG CGO_EXTRA_CFLAGS
  9. #Build deps
  10. RUN apk --no-cache add \
  11. build-base \
  12. git \
  13. nodejs \
  14. npm \
  15. && npm install -g pnpm@10 \
  16. && rm -rf /var/cache/apk/*
  17. # Setup repo
  18. COPY . ${GOPATH}/src/code.gitea.io/gitea
  19. WORKDIR ${GOPATH}/src/code.gitea.io/gitea
  20. # Checkout version if set
  21. RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \
  22. && make clean-all build
  23. # Begin env-to-ini build
  24. RUN go build contrib/environment-to-ini/environment-to-ini.go
  25. # Copy local files
  26. COPY docker/rootless /tmp/local
  27. # Set permissions
  28. RUN chmod 755 /tmp/local/usr/local/bin/docker-entrypoint.sh \
  29. /tmp/local/usr/local/bin/docker-setup.sh \
  30. /tmp/local/usr/local/bin/gitea \
  31. /go/src/code.gitea.io/gitea/gitea \
  32. /go/src/code.gitea.io/gitea/environment-to-ini
  33. FROM docker.io/library/alpine:3.22
  34. LABEL maintainer="maintainers@gitea.io"
  35. EXPOSE 2222 3000
  36. RUN apk --no-cache add \
  37. bash \
  38. ca-certificates \
  39. dumb-init \
  40. gettext \
  41. git \
  42. curl \
  43. gnupg \
  44. openssh-keygen \
  45. && rm -rf /var/cache/apk/*
  46. RUN addgroup \
  47. -S -g 1000 \
  48. git && \
  49. adduser \
  50. -S -H -D \
  51. -h /var/lib/gitea/git \
  52. -s /bin/bash \
  53. -u 1000 \
  54. -G git \
  55. git
  56. RUN mkdir -p /var/lib/gitea /etc/gitea
  57. RUN chown git:git /var/lib/gitea /etc/gitea
  58. COPY --from=build-env /tmp/local /
  59. COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
  60. COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini
  61. # git:git
  62. USER 1000:1000
  63. ENV GITEA_WORK_DIR=/var/lib/gitea
  64. ENV GITEA_CUSTOM=/var/lib/gitea/custom
  65. ENV GITEA_TEMP=/tmp/gitea
  66. ENV TMPDIR=/tmp/gitea
  67. # TODO add to docs the ability to define the ini to load (useful to test and revert a config)
  68. ENV GITEA_APP_INI=/etc/gitea/app.ini
  69. ENV HOME="/var/lib/gitea/git"
  70. VOLUME ["/var/lib/gitea", "/etc/gitea"]
  71. WORKDIR /var/lib/gitea
  72. ENTRYPOINT ["/usr/bin/dumb-init", "--", "/usr/local/bin/docker-entrypoint.sh"]
  73. CMD []