 6cf2e574bf
			
		
	
	6cf2e574bf
	
	
	
		
			
			nginx runs the init process as root so that it can bind to port 80. All worker processes run as an unprivileged user and thus the attack surface is minimal. The previous solution didn't change the user id of the user running Vikunja and thus didn't have an effect anyway. Related to #3228
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
| # syntax=docker/dockerfile:1
 | |
| #  ┬─┐┬ ┐o┬  ┬─┐
 | |
| #  │─││ │││  │ │
 | |
| #  ┘─┘┘─┘┘┘─┘┘─┘
 | |
| 
 | |
| FROM --platform=$BUILDPLATFORM node:18-alpine AS builder
 | |
| 
 | |
| WORKDIR /build
 | |
| 
 | |
| ARG USE_RELEASE=false
 | |
| ARG RELEASE_VERSION=main
 | |
| ENV PNPM_CACHE_FOLDER .cache/pnpm/
 | |
| 
 | |
| COPY package.json ./
 | |
| COPY pnpm-lock.yaml ./
 | |
| 
 | |
| RUN if [ "$USE_RELEASE" != true ]; then \
 | |
|       # https://pnpm.io/installation#using-corepack
 | |
|       corepack enable && \
 | |
|       pnpm install; \
 | |
|     fi
 | |
| 
 | |
| COPY . ./
 | |
| 
 | |
| RUN if [ "$USE_RELEASE" != true ]; then \
 | |
|       apk add --no-cache --virtual .build-deps git jq && \
 | |
|       git describe --tags --always --abbrev=10 | sed 's/-/+/; s/^v//; s/-g/-/' | \
 | |
|       xargs -0 -I{} jq -Mcnr --arg version {} '{VERSION:$version}' | \
 | |
|       tee src/version.json && \
 | |
|       apk del .build-deps; \
 | |
|     fi
 | |
| 
 | |
| RUN if [ "$USE_RELEASE" = true ]; then \
 | |
|       wget "https://dl.vikunja.io/frontend/vikunja-frontend-${RELEASE_VERSION}.zip" -O frontend-release.zip && \
 | |
|       unzip frontend-release.zip -d dist/; \
 | |
|     else \
 | |
|       # we don't use corepack prepare here by intend since
 | |
|       # we have renovate to keep our dependencies up to date
 | |
|       # Build the frontend
 | |
|       pnpm run build; \
 | |
|   fi
 | |
| 
 | |
| #  ┌┐┐┌─┐o┌┐┐┐ │
 | |
| #  ││││ ┬││││┌┼┘
 | |
| #  ┘└┘┘─┘┘┘└┘┘ └
 | |
| 
 | |
| FROM nginx:stable-alpine AS runner
 | |
| WORKDIR /usr/share/nginx/html
 | |
| LABEL maintainer="maintainers@vikunja.io"
 | |
| 
 | |
| ENV VIKUNJA_HTTP_PORT 80
 | |
| ENV VIKUNJA_HTTP2_PORT 81
 | |
| ENV VIKUNJA_LOG_FORMAT main
 | |
| ENV VIKUNJA_API_URL /api/v1
 | |
| ENV VIKUNJA_SENTRY_ENABLED false
 | |
| ENV VIKUNJA_SENTRY_DSN https://85694a2d757547cbbc90cd4b55c5a18d@o1047380.ingest.sentry.io/6024480
 | |
| 
 | |
| COPY docker/injector.sh /docker-entrypoint.d/50-injector.sh
 | |
| COPY docker/ipv6-disable.sh /docker-entrypoint.d/60-ipv6-disable.sh
 | |
| COPY docker/nginx.conf /etc/nginx/nginx.conf
 | |
| COPY docker/templates/. /etc/nginx/templates/
 | |
| # copy compiled files from stage 1
 | |
| COPY --from=builder /build/dist ./
 | |
| # manage permissions
 | |
| RUN chmod 0755 /docker-entrypoint.d/*.sh /etc/nginx/templates && \
 | |
|     chmod -R 0644 /etc/nginx/nginx.conf && \
 | |
|     chown -R nginx:nginx ./ /etc/nginx/conf.d /etc/nginx/templates && \
 | |
|     rm -f /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
 |