mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Dockerfile small refactor (#27757)
- Size and layer optimization, - Maintaining consistency in definitions (comments, apk etc.),
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							8faa38568b
						
					
				
				
					commit
					319414dd82
				
			
							
								
								
									
										36
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								Dockerfile
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| #Build stage | ||||
| # Build stage | ||||
| FROM docker.io/library/golang:1.21-alpine3.18 AS build-env | ||||
|  | ||||
| ARG GOPROXY | ||||
| @@ -9,20 +9,38 @@ 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 npm | ||||
| # Build deps | ||||
| RUN apk --no-cache add \ | ||||
|     build-base \ | ||||
|     git \ | ||||
|     nodejs \ | ||||
|     npm \ | ||||
|     && rm -rf /var/cache/apk/* | ||||
|  | ||||
| #Setup repo | ||||
| # Setup repo | ||||
| COPY . ${GOPATH}/src/code.gitea.io/gitea | ||||
| WORKDIR ${GOPATH}/src/code.gitea.io/gitea | ||||
|  | ||||
| #Checkout version if set | ||||
| # Checkout version if set | ||||
| RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \ | ||||
|  && make clean-all build | ||||
|  | ||||
| # Begin env-to-ini build | ||||
| RUN go build contrib/environment-to-ini/environment-to-ini.go | ||||
|  | ||||
| # Copy local files | ||||
| COPY docker/root /tmp/local | ||||
|  | ||||
| # Set permissions | ||||
| RUN chmod 755 /tmp/local/usr/bin/entrypoint \ | ||||
|               /tmp/local/usr/local/bin/gitea \ | ||||
|               /tmp/local/etc/s6/gitea/* \ | ||||
|               /tmp/local/etc/s6/openssh/* \ | ||||
|               /tmp/local/etc/s6/.s6-svscan/* \ | ||||
|               /go/src/code.gitea.io/gitea/gitea \ | ||||
|               /go/src/code.gitea.io/gitea/environment-to-ini | ||||
| RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete | ||||
|  | ||||
| FROM docker.io/library/alpine:3.18 | ||||
| LABEL maintainer="maintainers@gitea.io" | ||||
|  | ||||
| @@ -39,7 +57,8 @@ RUN apk --no-cache add \ | ||||
|     s6 \ | ||||
|     sqlite \ | ||||
|     su-exec \ | ||||
|     gnupg | ||||
|     gnupg \ | ||||
|     && rm -rf /var/cache/apk/* | ||||
|  | ||||
| RUN addgroup \ | ||||
|     -S -g 1000 \ | ||||
| @@ -61,10 +80,7 @@ VOLUME ["/data"] | ||||
| ENTRYPOINT ["/usr/bin/entrypoint"] | ||||
| CMD ["/bin/s6-svscan", "/etc/s6"] | ||||
|  | ||||
| COPY docker/root / | ||||
| COPY --from=build-env /tmp/local / | ||||
| COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea | ||||
| COPY --from=build-env /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini | ||||
| COPY --from=build-env /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete /etc/profile.d/gitea_bash_autocomplete.sh | ||||
| RUN chmod 755 /usr/bin/entrypoint /app/gitea/gitea /usr/local/bin/gitea /usr/local/bin/environment-to-ini | ||||
| RUN chmod 755 /etc/s6/gitea/* /etc/s6/openssh/* /etc/s6/.s6-svscan/* | ||||
| RUN chmod 644 /etc/profile.d/gitea_bash_autocomplete.sh | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| #Build stage | ||||
| # Build stage | ||||
| FROM docker.io/library/golang:1.21-alpine3.18 AS build-env | ||||
|  | ||||
| ARG GOPROXY | ||||
| @@ -10,19 +10,35 @@ ENV TAGS "bindata timetzdata $TAGS" | ||||
| ARG CGO_EXTRA_CFLAGS | ||||
|  | ||||
| #Build deps | ||||
| RUN apk --no-cache add build-base git nodejs npm | ||||
| RUN apk --no-cache add \ | ||||
|     build-base \ | ||||
|     git \ | ||||
|     nodejs \ | ||||
|     npm \ | ||||
|     && rm -rf /var/cache/apk/* | ||||
|  | ||||
| #Setup repo | ||||
| # Setup repo | ||||
| COPY . ${GOPATH}/src/code.gitea.io/gitea | ||||
| WORKDIR ${GOPATH}/src/code.gitea.io/gitea | ||||
|  | ||||
| #Checkout version if set | ||||
| # Checkout version if set | ||||
| RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \ | ||||
|  && make clean-all build | ||||
|  | ||||
| # Begin env-to-ini build | ||||
| RUN go build contrib/environment-to-ini/environment-to-ini.go | ||||
|  | ||||
| # Copy local files | ||||
| COPY docker/rootless /tmp/local | ||||
|  | ||||
| # Set permissions | ||||
| RUN chmod 755 /tmp/local/usr/local/bin/docker-entrypoint.sh \ | ||||
|               /tmp/local/usr/local/bin/docker-setup.sh \ | ||||
|               /tmp/local/usr/local/bin/gitea \ | ||||
|               /go/src/code.gitea.io/gitea/gitea \ | ||||
|               /go/src/code.gitea.io/gitea/environment-to-ini | ||||
| RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete | ||||
|  | ||||
| FROM docker.io/library/alpine:3.18 | ||||
| LABEL maintainer="maintainers@gitea.io" | ||||
|  | ||||
| @@ -35,7 +51,8 @@ RUN apk --no-cache add \ | ||||
|     gettext \ | ||||
|     git \ | ||||
|     curl \ | ||||
|     gnupg | ||||
|     gnupg \ | ||||
|     && rm -rf /var/cache/apk/* | ||||
|  | ||||
| RUN addgroup \ | ||||
|     -S -g 1000 \ | ||||
| @@ -51,21 +68,19 @@ RUN addgroup \ | ||||
| RUN mkdir -p /var/lib/gitea /etc/gitea | ||||
| RUN chown git:git /var/lib/gitea /etc/gitea | ||||
|  | ||||
| COPY docker/rootless / | ||||
| COPY --from=build-env /tmp/local / | ||||
| COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea | ||||
| COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini | ||||
| COPY --from=build-env /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete /etc/profile.d/gitea_bash_autocomplete.sh | ||||
| RUN chmod 755 /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-setup.sh /app/gitea/gitea /usr/local/bin/gitea /usr/local/bin/environment-to-ini | ||||
| RUN chmod 644 /etc/profile.d/gitea_bash_autocomplete.sh | ||||
|  | ||||
| #git:git | ||||
| # 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) | ||||
| # 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"] | ||||
| @@ -73,4 +88,3 @@ WORKDIR /var/lib/gitea | ||||
|  | ||||
| ENTRYPOINT ["/usr/bin/dumb-init", "--", "/usr/local/bin/docker-entrypoint.sh"] | ||||
| CMD [] | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,7 @@ if [ ! -x /bin/sh ]; then | ||||
| fi | ||||
|  | ||||
| if [ "${USER}" != "git" ]; then | ||||
|     # rename user | ||||
|     # Rename user | ||||
|     sed -i -e "s/^git\:/${USER}\:/g" /etc/passwd | ||||
| fi | ||||
|  | ||||
| @@ -19,13 +19,13 @@ if [ -z "${USER_UID}" ]; then | ||||
|   USER_UID="`id -u ${USER}`" | ||||
| fi | ||||
|  | ||||
| ## Change GID for USER? | ||||
| # Change GID for USER? | ||||
| if [ -n "${USER_GID}" ] && [ "${USER_GID}" != "`id -g ${USER}`" ]; then | ||||
|     sed -i -e "s/^${USER}:\([^:]*\):[0-9]*/${USER}:\1:${USER_GID}/" /etc/group | ||||
|     sed -i -e "s/^${USER}:\([^:]*\):\([0-9]*\):[0-9]*/${USER}:\1:\2:${USER_GID}/" /etc/passwd | ||||
| fi | ||||
|  | ||||
| ## Change UID for USER? | ||||
| # Change UID for USER? | ||||
| if [ -n "${USER_UID}" ] && [ "${USER_UID}" != "`id -u ${USER}`" ]; then | ||||
|     sed -i -e "s/^${USER}:\([^:]*\):[0-9]*:\([0-9]*\)/${USER}:\1:${USER_UID}:\2/" /etc/passwd | ||||
| fi | ||||
|   | ||||
		Reference in New Issue
	
	Block a user