57 lines
937 B
Docker
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"]
|