From 598f8d5c5569c4ec4bda5be218255e0c0361d99d Mon Sep 17 00:00:00 2001 From: Nikolay Tarasov Date: Thu, 27 Feb 2025 18:58:20 +0300 Subject: [PATCH] Fixed docker --- nestjs/backend/Dockerfile | 16 +++++++++--- nestjs/backend/docker-compose.yml | 41 +++++++++++++++---------------- nestjs/backend/package-lock.json | 8 +++--- nestjs/backend/package.json | 2 +- nestjs/backend/src/main.ts | 13 ++++++++++ 5 files changed, 50 insertions(+), 30 deletions(-) diff --git a/nestjs/backend/Dockerfile b/nestjs/backend/Dockerfile index 3039b8c..499f244 100644 --- a/nestjs/backend/Dockerfile +++ b/nestjs/backend/Dockerfile @@ -1,15 +1,23 @@ -FROM node:18.20.7-alpine +# Используем официальный Node.js образ +FROM node:18 +# Устанавливаем рабочую директорию внутри контейнера WORKDIR /app -COPY ./package*.json . +# Копируем package*.json +COPY package*.json ./ -RUN npm ci +# Устанавливаем зависимости +RUN npm install +# Копируем весь код COPY . . +# Собираем TypeScript RUN npm run build +# Открываем порт 3000 EXPOSE 3000 -CMD ["npm", "run", "start"] \ No newline at end of file +# Запускаем NestJS в продакшене +CMD ["npm", "run", "start:prod"] diff --git a/nestjs/backend/docker-compose.yml b/nestjs/backend/docker-compose.yml index 4f3d040..5159c83 100644 --- a/nestjs/backend/docker-compose.yml +++ b/nestjs/backend/docker-compose.yml @@ -1,25 +1,8 @@ version: "3.8" - services: - backend: - container_name: nestjs_backend - build: . - ports: - - "3000:3000" - environment: - DB_HOST: 109.107.166.17 - DB_PORT: 5432 - DB_USER: nichtar - DB_PASSWORD: 6t30a72 - DB_NAME: todo - JWT_SECRET: your_secret_key - JWT_EXPIRES_IN: 3600s - depends_on: - - postgres - - postgres: + db: + container_name: nestjs_db image: postgres:latest - container_name: postgres_container restart: always environment: POSTGRES_USER: nichtar @@ -28,7 +11,23 @@ services: ports: - "5432:5432" volumes: - - postgres_data:/var/lib/postgresql/data + - db_data:/var/lib/postgresql/data + + backend: + container_name: nestjs_backend + build: . + ports: + - "3000:3000" + depends_on: + - db + environment: + DB_HOST: db + DB_PORT: 5432 + DB_USER: nichtar + DB_PASSWORD: 6t30a72 + DB_NAME: todo + JWT_SECRET: your_secret_key + JWT_EXPIRES_IN: 3600s volumes: - postgres_data: + db_data: diff --git a/nestjs/backend/package-lock.json b/nestjs/backend/package-lock.json index f995063..e624ad1 100644 --- a/nestjs/backend/package-lock.json +++ b/nestjs/backend/package-lock.json @@ -15,7 +15,7 @@ "@nestjs/jwt": "^11.0.0", "@nestjs/passport": "^11.0.5", "@nestjs/platform-express": "^11.0.1", - "@nestjs/swagger": "^11.0.4", + "@nestjs/swagger": "^11.0.5", "@nestjs/typeorm": "^11.0.0", "bcrypt": "^5.1.1", "passport": "^0.7.0", @@ -2470,9 +2470,9 @@ } }, "node_modules/@nestjs/swagger": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-11.0.4.tgz", - "integrity": "sha512-wrdeQucHirv5hakCgFn34GANmqHG0//X0GF+VumYjEeE3H4AGtztbbgwnw/9XeqVM4mD2HjUFx5WYtJMpJvnWQ==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-11.0.5.tgz", + "integrity": "sha512-3z4rl7FgbLPBvJwR45nBDju4QFH7vufs9Ums8sCoc6T1O1dqpNpxz0sKfXiP5QA6AUljks1jARfOHeHeJ4zWBA==", "dependencies": { "@microsoft/tsdoc": "0.15.1", "@nestjs/mapped-types": "2.1.0", diff --git a/nestjs/backend/package.json b/nestjs/backend/package.json index 00db524..9bd8e3d 100644 --- a/nestjs/backend/package.json +++ b/nestjs/backend/package.json @@ -26,7 +26,7 @@ "@nestjs/jwt": "^11.0.0", "@nestjs/passport": "^11.0.5", "@nestjs/platform-express": "^11.0.1", - "@nestjs/swagger": "^11.0.4", + "@nestjs/swagger": "^11.0.5", "@nestjs/typeorm": "^11.0.0", "bcrypt": "^5.1.1", "passport": "^0.7.0", diff --git a/nestjs/backend/src/main.ts b/nestjs/backend/src/main.ts index 34e0f1f..c8968ed 100644 --- a/nestjs/backend/src/main.ts +++ b/nestjs/backend/src/main.ts @@ -1,5 +1,6 @@ import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; +import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; async function bootstrap() { const app = await NestFactory.create(AppModule); @@ -7,6 +8,18 @@ async function bootstrap() { app.setGlobalPrefix('api'); // Все маршруты будут начинаться с `/api` app.enableCors(); // Разрешаем CORS + // Настройка Swagger + const config = new DocumentBuilder() + .setTitle('Project Management API') + .setDescription('API documentation for NestJS + Docker project') + .setVersion('1.0') + .addBearerAuth() // Добавляем поддержку JWT (Bearer) + .build(); + + const document = SwaggerModule.createDocument(app, config); + SwaggerModule.setup('api/docs', app, document); + // Теперь Swagger доступен по /api/docs + await app.listen(3000); console.log('🚀 Server running on http://localhost:3000/api'); }