From f340ba045452ef376844c4d9d67a4865bc3979c1 Mon Sep 17 00:00:00 2001 From: gabrielm2q Date: Thu, 5 Dec 2024 23:18:57 -0300 Subject: [PATCH 1/4] fix(fga-eps-mds/2024.2-ARANDU-DOC#42): adding created docker configuration --- .dockerignore | 6 +++--- .env.dev | 3 --- .env.dev.template | 11 +++++++++++ .env.prod.template | 11 +++++++++++ Dockerfile | 37 +++++++++++++++++++++++++++++++------ Dockerfile.prod | 39 +++++++++++++++++++++++++++++++++++++++ Makefile | 15 +++++++++++++++ docker-compose.yml | 19 +++++++++---------- src/main.ts | 9 +++++---- 9 files changed, 124 insertions(+), 26 deletions(-) delete mode 100644 .env.dev create mode 100644 .env.dev.template create mode 100644 .env.prod.template create mode 100644 Dockerfile.prod create mode 100644 Makefile diff --git a/.dockerignore b/.dockerignore index 3dc974b..c9c9bce 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,9 +4,9 @@ .dockerignore # Build dependencies -dist.do -node_modules -node_module +# dist.do +# node_modules +# node_module # Misc .eslintrc.js diff --git a/.env.dev b/.env.dev deleted file mode 100644 index 68e40c3..0000000 --- a/.env.dev +++ /dev/null @@ -1,3 +0,0 @@ -MONGODB_URI= -USER_SERVICE_URL= -AUTH_SERVICE_URL= \ No newline at end of file diff --git a/.env.dev.template b/.env.dev.template new file mode 100644 index 0000000..02b093d --- /dev/null +++ b/.env.dev.template @@ -0,0 +1,11 @@ +MONGODB_URI= +MONGO_INITDB_ROOT_USERNAME= +MONGO_INITDB_ROOT_PASSWORD= +ME_CONFIG_MONGODB_ADMINUSERNAME= +ME_CONFIG_MONGODB_ADMINPASSWORD= +ME_CONFIG_MONGODB_URL= +ME_CONFIG_BASICAUTH= +ME_CONFIG_BASICAUTH_USERNAME= +ME_CONFIG_BASICAUTH_PASSWORD= +USER_SERVICE_URL= +AUTH_SERVICE_URL= \ No newline at end of file diff --git a/.env.prod.template b/.env.prod.template new file mode 100644 index 0000000..02b093d --- /dev/null +++ b/.env.prod.template @@ -0,0 +1,11 @@ +MONGODB_URI= +MONGO_INITDB_ROOT_USERNAME= +MONGO_INITDB_ROOT_PASSWORD= +ME_CONFIG_MONGODB_ADMINUSERNAME= +ME_CONFIG_MONGODB_ADMINPASSWORD= +ME_CONFIG_MONGODB_URL= +ME_CONFIG_BASICAUTH= +ME_CONFIG_BASICAUTH_USERNAME= +ME_CONFIG_BASICAUTH_PASSWORD= +USER_SERVICE_URL= +AUTH_SERVICE_URL= \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 20520c2..0b1b9d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,39 @@ -FROM node:22-alpine - -WORKDIR /app +FROM node:22-alpine AS base +FROM base AS deps +RUN apk update && apk add --no-cache libc6-compat -COPY package*.json ./ +WORKDIR /app -RUN npm install +COPY package.json package-lock.json* ./ +RUN \ + if [ -f package-lock.json ]; then npm ci; \ + fi +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules COPY . . +COPY .env .env RUN npm run build -CMD ["npm", "run", "start:dev"] +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV=development + +RUN addgroup -g 1001 -S nodejs \ + && adduser -S arandu -u 1001 + +COPY --chown=arandu:nodejs --from=builder /app/dist ./dist +COPY --chown=arandu:nodejs --from=builder /app/node_modules ./node_modules +COPY --chown=arandu:nodejs --from=builder /app/.env ./.env + +USER arandu + +EXPOSE 3002 + +ENV PORT=3002 + +CMD ["node", "dist/src/main.js"] diff --git a/Dockerfile.prod b/Dockerfile.prod new file mode 100644 index 0000000..2d68fed --- /dev/null +++ b/Dockerfile.prod @@ -0,0 +1,39 @@ +FROM node:22-alpine AS base + +FROM base AS deps +RUN apk add --no-cache libc6-compat + +WORKDIR /app + +COPY package.json package-lock.json* ./ +RUN \ + if [ -f package-lock.json ]; then npm ci; \ + fi + +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . + +COPY .env.prod.template .env +RUN npm run build + +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV=production + +RUN addgroup -g 1001 -S nodejs \ + && adduser -S arandu -u 1001 + +COPY --chown=arandu:nodejs --from=builder /app/dist ./dist +COPY --chown=arandu:nodejs --from=builder /app/node_modules ./node_modules +COPY --chown=arandu:nodejs --from=builder /app/.env ./.env.prod.template + +USER arandu + +EXPOSE 3002 + +ENV PORT=3002 + +CMD ["node", "dist/src/main.js"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..24082cf --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ +.PHONY: build +build: + docker compose build + +.PHONY: start +start: + docker compose up + +.PHONY: run +run: + docker compose up --build + +.PHONY: stop +stop: + docker compose down \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 05734eb..f32b237 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,19 +2,18 @@ services: studio-api: container_name: studio-api restart: on-failure - build: . - environment: - - NODE_ENV=development - ports: - - 3002:3002 - volumes: - - ./src:/app/src - - ./test:/app/test env_file: - .env + build: + context: . + dockerfile: Dockerfile + image: studio-api + ports: + - "3002:3002" networks: - - calculus-network + - arandu-network networks: - calculus-network: + arandu-network: + name: arandu-network driver: bridge \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 49335f2..f54a48f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,7 +1,7 @@ +import { Logger, ValidationPipe } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; -import { ConfigService } from '@nestjs/config'; -import { Logger, ValidationPipe } from '@nestjs/common'; const configService = new ConfigService(); const logger = new Logger('Main'); @@ -10,7 +10,8 @@ async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalPipes(new ValidationPipe()); app.enableCors(); - await app.listen(configService.get('PORT')); - logger.log(`Application listening on port ${configService.get('PORT')}`); + await app.listen(configService.get('PORT'), () => { + logger.log(`Application listening on port ${configService.get('PORT')}`); + }); } bootstrap(); From 50dc6f4c45e9e6d073458ee7d69a6beba6604f4d Mon Sep 17 00:00:00 2001 From: gabrielm2q Date: Sat, 7 Dec 2024 12:28:13 -0300 Subject: [PATCH 2/4] fix(fga-eps-mds/2024.2-ARANDU-DOC#42): quickfix on network at docker compose file --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index f32b237..ae7c5ad 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,4 +16,4 @@ services: networks: arandu-network: name: arandu-network - driver: bridge \ No newline at end of file + external: true From 12a06c24210a291135ba9d8f05d0b1b7628b08f0 Mon Sep 17 00:00:00 2001 From: gabrielm2q Date: Sun, 8 Dec 2024 00:01:19 -0300 Subject: [PATCH 3/4] fix(fga-eps-mds/2024.2-ARANDU-DOC#42): fix production dockerfile Co-authored-by: dartmol203 --- Dockerfile.prod | 23 ++++++++--------------- package.json | 2 +- src/main.ts | 2 +- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/Dockerfile.prod b/Dockerfile.prod index 2d68fed..8935b56 100644 --- a/Dockerfile.prod +++ b/Dockerfile.prod @@ -1,7 +1,4 @@ -FROM node:22-alpine AS base - -FROM base AS deps -RUN apk add --no-cache libc6-compat +FROM node:18 AS base WORKDIR /app @@ -10,12 +7,14 @@ RUN \ if [ -f package-lock.json ]; then npm ci; \ fi +RUN npm install nodemon --save-dev + FROM base AS builder WORKDIR /app -COPY --from=deps /app/node_modules ./node_modules +RUN npm install COPY . . -COPY .env.prod.template .env +COPY .env .env RUN npm run build FROM base AS runner @@ -23,17 +22,11 @@ WORKDIR /app ENV NODE_ENV=production -RUN addgroup -g 1001 -S nodejs \ - && adduser -S arandu -u 1001 - -COPY --chown=arandu:nodejs --from=builder /app/dist ./dist -COPY --chown=arandu:nodejs --from=builder /app/node_modules ./node_modules -COPY --chown=arandu:nodejs --from=builder /app/.env ./.env.prod.template - -USER arandu +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/ ./ EXPOSE 3002 ENV PORT=3002 -CMD ["node", "dist/src/main.js"] +CMD ["npm", "run", "start:prod"] diff --git a/package.json b/package.json index f86715d..287852c 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "start": "nest start", "start:dev": "nest start --watch", "start:debug": "nest start --debug --watch", - "start:prod": "node dist/main", + "start:prod": "nest start --watch", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest --passWithNoTests --no-cache --runInBand", "test:all": "npm run test -- --coverage --config jest.config.ts", diff --git a/src/main.ts b/src/main.ts index f54a48f..786ba6d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -10,7 +10,7 @@ async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalPipes(new ValidationPipe()); app.enableCors(); - await app.listen(configService.get('PORT'), () => { + await app.listen(configService.get('PORT'), '0.0.0.0', () => { logger.log(`Application listening on port ${configService.get('PORT')}`); }); } From 8706b033f0d597cff193776bc538773f4f0591a5 Mon Sep 17 00:00:00 2001 From: gabrielm2q Date: Sun, 8 Dec 2024 03:34:43 -0300 Subject: [PATCH 4/4] fix(fga-eps-mds/2024.2-ARANDU-DOC#42): fix development dockerfile and makefile --- Dockerfile | 21 +++++++-------------- Makefile | 8 ++++---- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0b1b9d3..e03a3ab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,4 @@ -FROM node:22-alpine AS base - -FROM base AS deps -RUN apk update && apk add --no-cache libc6-compat +FROM node:18 AS base WORKDIR /app @@ -10,9 +7,11 @@ RUN \ if [ -f package-lock.json ]; then npm ci; \ fi +RUN npm install nodemon --save-dev + FROM base AS builder WORKDIR /app -COPY --from=deps /app/node_modules ./node_modules +RUN npm install COPY . . COPY .env .env @@ -23,17 +22,11 @@ WORKDIR /app ENV NODE_ENV=development -RUN addgroup -g 1001 -S nodejs \ - && adduser -S arandu -u 1001 - -COPY --chown=arandu:nodejs --from=builder /app/dist ./dist -COPY --chown=arandu:nodejs --from=builder /app/node_modules ./node_modules -COPY --chown=arandu:nodejs --from=builder /app/.env ./.env - -USER arandu +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/ ./ EXPOSE 3002 ENV PORT=3002 -CMD ["node", "dist/src/main.js"] +CMD ["npm", "run", "start:dev"] diff --git a/Makefile b/Makefile index 24082cf..04b0859 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,15 @@ .PHONY: build build: - docker compose build + npm install && docker-compose build --no-cache .PHONY: start start: - docker compose up + docker-compose up .PHONY: run run: - docker compose up --build + npm install && docker-compose build --no-cache && docker-compose up .PHONY: stop stop: - docker compose down \ No newline at end of file + docker-compose down \ No newline at end of file