TTGF-Homepage/Dockerfile

57 lines
937 B
Docker

FROM node:24-slim AS base
WORKDIR /usr/src/webserver
# needed for prisma
RUN apt-get update -y && apt-get install openssl -y
FROM base AS install
# Install packages: dev and then build
RUN mkdir -p /temp/dev
COPY package.json package-lock.json /temp/dev/
RUN cd /temp/dev && npm ci
RUN mkdir -p /temp/prod
COPY package.json package-lock.json /temp/prod/
RUN cd /temp/prod && npm ci --omit=dev
FROM base AS prebuild
# copy installed dev packages
COPY --from=install /temp/dev/node_modules node_modules
# Copy source files
COPY . .
# Initialize prisma
RUN npx prisma generate
FROM prebuild AS build
# Build project
RUN npm run build
FROM base AS release
# Copy release files
COPY --from=install /temp/prod/node_modules node_modules
COPY --from=build /usr/src/webserver/build .
EXPOSE 3000/tcp
CMD ["node", "."]
FROM prebuild AS dev
RUN npx svelte-kit sync
EXPOSE 5173/tcp
CMD ["npm", "run", "dev", "--", "--host"]