From b455acea468b8af0d92546bdc51623fd533a78ab Mon Sep 17 00:00:00 2001 From: LeoMortari Date: Mon, 3 Nov 2025 11:59:34 -0300 Subject: [PATCH] Add compose e dockerfile --- .dockerignore | 22 +++++++++++++++++++--- .env.example | 5 +++++ .env.exemple | 4 ---- Dockerfile | 47 +++++++++++++++++++++++++++++++++++----------- docker-compose.yml | 18 ++++++++++-------- package.json | 2 +- 6 files changed, 71 insertions(+), 27 deletions(-) create mode 100644 .env.example delete mode 100644 .env.exemple diff --git a/.dockerignore b/.dockerignore index 5c313b2..3dae9ea 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,23 @@ node_modules -yarn.lock -package-lock.json generated dist +docker-compose.yml +Dockerfile +.gitignore .github -.vscode \ No newline at end of file +.vscode +.idea +.git +*.md +.env +.env.local +.env.*.local +.env.example +.env.exemple +npm-debug.log* +yarn-debug.log* +yarn-error.log* +coverage +.prettierrc +.eslintrc.js +.eslint* \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..8096b32 --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +NODE_ENV=production +PORT=3000 +DATABASE_URL="postgresql://username:password@postgres:5432/clipperia?schema=public" +KEYCLOAK_URL="https://auth.clipperia.com.br" +YOUTUBE_API_URL="https://your-youtube-api-url.com" diff --git a/.env.exemple b/.env.exemple deleted file mode 100644 index 528fe5b..0000000 --- a/.env.exemple +++ /dev/null @@ -1,4 +0,0 @@ -DATABASE_URL="postgresql://username:password@ip_server:port/database?schema=public" -KEYCLOAK_URL="https://auth.clipperia.com.br" -YOUTUBE_API_URL="https://totally-real-dingo.ngrok-free.app" -GEMINI_API_KEY="GEMINI API KEY" \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index f2f356f..1b40081 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,45 @@ -FROM node:22-alpine +FROM node:24-alpine AS builder WORKDIR /app COPY package.json ./ + +RUN npm install -g pnpm + +RUN pnpm install + COPY prisma ./prisma/ - -RUN yarn install - -COPY . . - -RUN yarn build - -ENV KEYCLOAK_URL=http://keycloak:8080 - RUN npx prisma generate +COPY nest-cli.json tsconfig.json tsconfig.build.json ./ + +COPY src ./src + +RUN pnpm build + +RUN echo "=== Verificando build ===" && \ + ls -la dist/ && \ + test -f dist/main.js && \ + echo "✓ Build concluído com sucesso!" + +FROM node:24-alpine + +WORKDIR /app + +RUN npm install -g pnpm + +COPY package.json pnpm-lock.yaml ./ + +RUN pnpm install --prod + +COPY prisma ./prisma/ +RUN npx prisma generate + +COPY --from=builder /app/dist ./dist + +ENV NODE_ENV=production +ENV PORT=3000 + EXPOSE 3000 -CMD ["yarn", "start:prod"] +CMD ["node", "dist/main.js"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 4964458..4342982 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,18 +1,20 @@ services: - clipperia-api: + api: build: context: . dockerfile: Dockerfile + no_cache: true ports: - - '3050:3000' + - '1010:3000' container_name: clipperia-api environment: - NODE_ENV: development + NODE_ENV: production KEYCLOAK_URL: http://keycloak:8080 DATABASE_URL: postgresql://leolitas:L@l321321321@postgres:5432/clipperia?schema=public - networks: - - dokploy-network + YOUTUBE_API_URL: https://totally-real-dingo.ngrok-free.app +# networks: +# - dokploy-network -networks: - dokploy-network: - external: true +# networks: +# dokploy-network: +# external: true diff --git a/package.json b/package.json index 8dff000..7a0f4ac 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "start": "nest start", "start:dev": "cross-env NODE_ENV=development nest start --watch", "start:debug": "cross-env NODE_ENV=development nest start --debug --watch", - "start:prod": "node dist/main", + "start:prod": "node dist/main.js", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch",