# syntax=docker/dockerfile:1 # ┬─┐┬ ┐o┬ ┬─┐ # │─││ │││ │ │ # ┘─┘┘─┘┘┘─┘┘─┘ FROM --platform=$BUILDPLATFORM node:20.11.0-alpine AS builder WORKDIR /build ARG USE_RELEASE=false ARG RELEASE_VERSION=unstable ENV PNPM_CACHE_FOLDER .cache/pnpm/ ENV PUPPETEER_SKIP_DOWNLOAD true COPY package.json ./ COPY pnpm-lock.yaml ./ COPY patches ./patches/ 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 ENV VIKUNJA_PROJECT_INFINITE_NESTING_ENABLED false ENV VIKUNJA_ALLOW_ICON_CHANGES true ENV VIKUNJA_CUSTOM_LOGO_URL "''" 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