51 lines
1.1 KiB
Docker
51 lines
1.1 KiB
Docker
#syntax=docker/dockerfile:1.7-labs
|
|
|
|
FROM node:22 AS build-stage
|
|
|
|
WORKDIR /app/dwengo
|
|
|
|
# Install dependencies
|
|
|
|
COPY package*.json ./
|
|
COPY backend/package.json ./backend/
|
|
# Backend depends on common and docs
|
|
COPY common/package.json ./common/
|
|
COPY docs/package.json ./docs/
|
|
|
|
RUN npm install --silent
|
|
|
|
# Build the backend
|
|
|
|
# Root tsconfig.json
|
|
COPY tsconfig.json tsconfig.build.json ./
|
|
|
|
COPY --exclude=backend/tests/ backend ./backend
|
|
COPY common ./common
|
|
COPY docs ./docs
|
|
|
|
RUN npm run build
|
|
|
|
FROM node:22 AS production-stage
|
|
|
|
WORKDIR /app/dwengo
|
|
|
|
COPY package*.json ./
|
|
COPY backend/package.json ./backend/
|
|
# Backend depends on common
|
|
COPY common/package.json ./common/
|
|
|
|
RUN npm install --silent --only=production
|
|
|
|
# Copy static files
|
|
|
|
COPY ./backend/i18n ./i18n
|
|
|
|
# Copy built files
|
|
|
|
COPY --from=build-stage /app/dwengo/common/dist ./common/dist
|
|
COPY --from=build-stage /app/dwengo/backend/dist ./backend/dist
|
|
COPY --from=build-stage /app/dwengo/docs/api/swagger.json ./docs/api/swagger.json
|
|
|
|
EXPOSE 3000
|
|
|
|
CMD ["node", "--env-file=/app/dwengo/backend/.env", "/app/dwengo/backend/dist/app.js"]
|