1
0
Fork 0
freesewing/sites/backend/Dockerfile
2022-12-18 14:43:22 +01:00

44 lines
1.2 KiB
Docker

## Stage 1: Builder
FROM node:16.15-slim as builder
## Set workdir
WORKDIR /backend
## Install node dependencies
COPY package* ./
COPY prisma .
RUN apt-get update && apt-get install -y openssl
RUN npm install pm2 && npm ci
RUN npx prisma generate
## Build app
COPY package.json package.json
COPY src src
COPY prisma prisma
COPY local-config.mjs local-config.mjs
COPY build.mjs build.mjs
RUN npm run build
## Stage 2: App
FROM node:16.15-slim as app
## Set workdir
WORKDIR /backend
## Copy built node modules and binaries without including the toolchain
COPY --from=builder /backend/node_modules/ /backend/node_modules/
COPY --from=builder /backend/dist/ /backend/dist/
COPY --from=builder /backend/package.json /backend/package.json
COPY --from=builder /backend/prisma /backend
COPY --from=builder /backend/prisma/schema.sqlite /backend/db.sqlite
COPY --from=builder /backend/local-config.mjs /backend/
RUN mkdir -p /backend/src/landing
COPY --from=builder /backend/src/landing/* /backend/src/landing/
## Add a user to run the app
RUN useradd --home-dir /backend --comment FreeSewing --no-create-home --uid 2000 freesewing
RUN chown -R freesewing /backend
## Drop privleges and run app
USER freesewing
CMD ["./node_modules/.bin/pm2-runtime", "./dist/index.mjs"]