diff --git a/backend/package-lock.json b/backend/package-lock.json index a85dbef5bd9029312a90321961a7dfa6adabed22..ca5a6ee8fbbf039a2b1660f247e2d90311f7c3da 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -10,6 +10,7 @@ "license": "UNLICENSED", "dependencies": { "@nestjs/common": "^8.0.0", + "@nestjs/config": "^2.1.0", "@nestjs/core": "^8.0.0", "@nestjs/platform-express": "^8.0.0", "jshint": "^2.13.4", @@ -1541,6 +1542,22 @@ } } }, + "node_modules/@nestjs/config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-2.1.0.tgz", + "integrity": "sha512-wUpt1/QJEN7xnJl4pM3c9rHrY1widq2yPOZfjaMD1//XAP9LLHTaW+RxSEG6BSGIm3w4wGtjco+gKNB2WL7yRg==", + "dependencies": { + "dotenv": "16.0.1", + "dotenv-expand": "8.0.3", + "lodash": "4.17.21", + "uuid": "8.3.2" + }, + "peerDependencies": { + "@nestjs/common": "^7.0.0 || ^8.0.0", + "reflect-metadata": "^0.1.13", + "rxjs": "^6.0.0 || ^7.2.0" + } + }, "node_modules/@nestjs/core": { "version": "8.4.6", "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.6.tgz", @@ -3523,6 +3540,22 @@ "domelementtype": "1" } }, + "node_modules/dotenv": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/dotenv-expand": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", + "integrity": "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==", + "engines": { + "node": ">=12" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -9979,6 +10012,17 @@ "uuid": "8.3.2" } }, + "@nestjs/config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-2.1.0.tgz", + "integrity": "sha512-wUpt1/QJEN7xnJl4pM3c9rHrY1widq2yPOZfjaMD1//XAP9LLHTaW+RxSEG6BSGIm3w4wGtjco+gKNB2WL7yRg==", + "requires": { + "dotenv": "16.0.1", + "dotenv-expand": "8.0.3", + "lodash": "4.17.21", + "uuid": "8.3.2" + } + }, "@nestjs/core": { "version": "8.4.6", "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.6.tgz", @@ -11518,6 +11562,16 @@ "domelementtype": "1" } }, + "dotenv": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==" + }, + "dotenv-expand": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", + "integrity": "sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==" + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", diff --git a/backend/package.json b/backend/package.json index 8c71fb3e7ca4c36dbbe8e3a77716bd8be33803db..21cdb97e6e3e69b5129c275f8a811eb986e64a49 100644 --- a/backend/package.json +++ b/backend/package.json @@ -22,6 +22,7 @@ }, "dependencies": { "@nestjs/common": "^8.0.0", + "@nestjs/config": "^2.1.0", "@nestjs/core": "^8.0.0", "@nestjs/platform-express": "^8.0.0", "jshint": "^2.13.4", diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 86628031ca2a10fe172fe824f69d1720c44b43ce..c3a23fc4f84ce1016a04de3a55d0e4def540396e 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -1,9 +1,12 @@ import { Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ - imports: [], + imports: [ConfigModule.forRoot({ + envFilePath: '../.env', + })], controllers: [AppController], providers: [AppService], }) diff --git a/backend/src/main.ts b/backend/src/main.ts index 13cad38cff92aa3b3d3ef6232306e450cadf5713..55127cb8716d9ce0226d7b1c5da660fa0e66283b 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -1,8 +1,11 @@ import { NestFactory } from '@nestjs/core'; +import { ConfigService } from '@nestjs/config'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); - await app.listen(3000); + const configService = new ConfigService(); + console.log('NestJS server is listening on: http://localhost:' + configService.get('SERVER_PORT')); + await app.listen(configService.get('SERVER_PORT')); } bootstrap(); diff --git a/docker-compose.yml b/docker-compose.yml index d4073859049393946be92a1b6f4fca36b35dafd4..a04f0925943d3e6f9f70f6cbb4b94ea01b87e86e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,7 +10,7 @@ services: command: npm run start:debug env_file: .env ports: - - 127.0.0.1:${SERVER_PORT}:3000 + - 127.0.0.1:${SERVER_PORT}:${SERVER_PORT} volumes: # changes in host's ./backend directory will be propagated to the container - ./backend:/usr/src/app @@ -53,6 +53,7 @@ services: nginx: container_name: nginx image: nginx:1.21.6-alpine + env_file: .env ports: - 127.0.0.1:${NGINX_PORT}:${NGINX_PORT} volumes: diff --git a/nginx/templates/default.conf.template b/nginx/templates/default.conf.template index 1b0ec6a743d462d39dd84101796f65998c4017df..831ce45a67c5df1ce253e15555ad05d032767c40 100644 --- a/nginx/templates/default.conf.template +++ b/nginx/templates/default.conf.template @@ -1,6 +1,5 @@ -upstream nest_server { - # TODO: must be same port as the nestJS server container port - server server:3000; +upstream nestjs_server { + server server:${SERVER_PORT}; } server { @@ -22,6 +21,6 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; - proxy_pass http://nest_server; + proxy_pass http://nestjs_server; } }