From 8aee2a3b292e8f6ea13f6dfbfa9d7f5c2dfa4ab7 Mon Sep 17 00:00:00 2001 From: Issam Mezgueldi Date: Sun, 24 Mar 2024 12:52:20 +0000 Subject: [PATCH] dockerize the application --- docker-compose.yaml | 18 ++++++++++++++++++ docker/.dockerignore | 1 + docker/Dockerfile | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 docker-compose.yaml create mode 100644 docker/.dockerignore create mode 100644 docker/Dockerfile diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..809a287 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,18 @@ +services: + iam: + build: + context: . + dockerfile: docker/Dockerfile + target: development + restart: always + ports: + - '3000:3000' + volumes: + - ./src:/app/src + - ./.env:/app/.env + environment: + NODE_ENV: development + +networks: + app-network: + driver: bridge diff --git a/docker/.dockerignore b/docker/.dockerignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/docker/.dockerignore @@ -0,0 +1 @@ +node_modules/ diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..45c08ba --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,33 @@ +# Development Stage +FROM node:20-alpine AS development + +WORKDIR /app + +COPY package.json pnpm-lock.yaml ./ + +RUN npm install -g pnpm && \ + npm install -g @nestjs/cli && \ + pnpm install + +COPY .env nest-cli.json tsconfig.build.json tsconfig.json ./ +COPY migrations ./migrations +COPY src ./src + +CMD ["npm", "run", "start:dev"] + +# Production Stage +FROM node:20-alpine AS production + +WORKDIR /app + +COPY package.json pnpm-lock.yaml ./ + +RUN npm install -g pnpm && \ + npm install -g @nestjs/cli && \ + pnpm install --production + +COPY --from=development /app/dist ./dist + +EXPOSE 3000 + +CMD ["node", "./dist/main.js"] \ No newline at end of file