hedgedoc/frontend/docker/Dockerfile
Tilman Vatteroth 4cb332622a feat(frontend): add build script
The build script prepares the package for a production build, builds the app, places every all needed files in a dist directory and cleans it.

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
2023-08-27 12:42:40 +02:00

52 lines
1.3 KiB
Docker

# SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
#
# SPDX-License-Identifier: CC-BY-SA-4.0
# BASE
FROM docker.io/node:20-alpine@sha256:f62abc08fe1004555c4f28b6793af8345a76230b21d2d249976f329079e2fef2 AS base
RUN apk add --no-cache tini
ENTRYPOINT ["tini", "--"]
# BUILD
FROM base AS builder
RUN apk add --no-cache libc6-compat
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV YARN_CACHE_FOLDER=/tmp/.yarn
USER node
WORKDIR /usr/src/app
COPY --chown=node . .
RUN --mount=type=cache,sharing=locked,uid=1000,gid=1000,target=/tmp/.yarn \
yarn install --immutable
ARG TURBO_TEAM
ARG TURBO_API
ARG TURBO_TOKEN
RUN yarn turbo run build --filter=frontend --no-cache --no-daemon
# RUNNER
FROM base
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
LABEL org.opencontainers.image.title='HedgeDoc production frontend image'
LABEL org.opencontainers.image.url='https://hedgedoc.org'
LABEL org.opencontainers.image.source='https://github.com/hedgedoc/hedgedoc'
LABEL org.opencontainers.image.documentation='https://github.com/hedgedoc/hedgedoc/blob/develop/docs/content/dev/docker.md'
LABEL org.opencontainers.image.licenses='AGPL-3.0'
WORKDIR /usr/src/app
COPY --from=builder --chown=node:node /usr/src/app/frontend/dist ./
USER node
ENV PORT 3001
EXPOSE 3001/tcp
WORKDIR /usr/src/app/frontend
CMD ["node", "server.js"]