From 4a7c927321637b400b249e16c1d2264561ff6bc5 Mon Sep 17 00:00:00 2001 From: leesungbin Date: Tue, 15 Nov 2022 16:56:08 +0900 Subject: [PATCH] =?UTF-8?q?ci:=20backend=20=EB=B0=B0=ED=8F=AC=EC=8B=9C=20d?= =?UTF-8?q?ocker-compose=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docker-compose로 backend 서버와 redis, mongodb를 연결하였습니다. .env 파일 내부에는 backend 배포에 필요한 모든 환경변수가 필요합니다. env 파일과 docker-compose 파일은 서버에 별도로 존재해야합니다. --- .github/workflows/deploy_dev.yml | 2 +- backend/.gitignore | 2 +- backend/docker-compose.yml | 33 +++++++ backend/package.json | 151 ++++++++++++++++--------------- backend/src/main.ts | 2 +- 5 files changed, 112 insertions(+), 78 deletions(-) create mode 100644 backend/docker-compose.yml diff --git a/.github/workflows/deploy_dev.yml b/.github/workflows/deploy_dev.yml index 490dfba..a2ba640 100644 --- a/.github/workflows/deploy_dev.yml +++ b/.github/workflows/deploy_dev.yml @@ -55,6 +55,6 @@ jobs: docker pull ${{ secrets.NCP_CONTAINER_REGISTRY }}/prv-frontend docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) - docker run -d -p 4000:4000 --env-file ${{ secrets.ENV_FILENAME_BACKEND }} ${{ secrets.NCP_CONTAINER_REGISTRY }}/prv-backend + docker compose --env-file ${{ secrets.ENV_FILENAME_BACKEND}} up --build -d docker run -d -p 3000:80 --env-file ${{ secrets.ENV_FILENAME_FRONTEND }} ${{ secrets.NCP_CONTAINER_REGISTRY }}/prv-frontend docker image prune -f diff --git a/backend/.gitignore b/backend/.gitignore index 67ff183..72b99a2 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -35,4 +35,4 @@ lerna-debug.log* !.vscode/extensions.json # env -/.dev.env \ No newline at end of file +*.env \ No newline at end of file diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml new file mode 100644 index 0000000..a3820f0 --- /dev/null +++ b/backend/docker-compose.yml @@ -0,0 +1,33 @@ +version: '3' + +services: + prv: + restart: always + env_file: + - ${ENV_FILE} + image: ${NCP_CONTAINER_REGISTRY} + links: + - redis + - mongo + ports: + - 4000:4000 + networks: + - viewpoint + + mongo: + image: mongo + ports: + - 27017:27017 + networks: + - viewpoint + + redis: + image: redis + ports: + - 6379:6379 + networks: + - viewpoint + +networks: + viewpoint: + driver: bridge diff --git a/backend/package.json b/backend/package.json index f769afe..827cfb7 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,77 +1,78 @@ { - "name": "backend", - "version": "0.0.1", - "description": "", - "author": "", - "private": true, - "license": "UNLICENSED", - "scripts": { - "prebuild": "rimraf dist", - "build": "nest build", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "start": "nest start", - "start:dev": "nest start --watch", - "start:debug": "nest start --debug --watch", - "start:prod": "node dist/main", - "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", - "test": "jest", - "test:watch": "jest --watch", - "test:cov": "jest --coverage", - "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" - }, - "dependencies": { - "@liaoliaots/nestjs-redis": "^9.0.4", - "@nestjs/common": "^9.0.0", - "@nestjs/config": "^2.2.0", - "@nestjs/core": "^9.0.0", - "@nestjs/platform-express": "^9.0.0", - "cache-manager": "^5.1.3", - "class-transformer": "^0.5.1", - "class-validator": "^0.13.2", - "ioredis": "^5.2.4", - "reflect-metadata": "^0.1.13", - "rimraf": "^3.0.2", - "rxjs": "^7.2.0" - }, - "devDependencies": { - "@nestjs/cli": "^9.0.0", - "@nestjs/schematics": "^9.0.0", - "@nestjs/testing": "^9.0.0", - "@types/express": "^4.17.13", - "@types/jest": "28.1.8", - "@types/node": "^16.0.0", - "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^5.0.0", - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^8.0.1", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", - "jest": "28.1.3", - "prettier": "^2.3.2", - "source-map-support": "^0.5.20", - "supertest": "^6.1.3", - "ts-jest": "28.0.8", - "ts-loader": "^9.2.3", - "ts-node": "^10.0.0", - "tsconfig-paths": "4.1.0", - "typescript": "^4.7.4" - }, - "jest": { - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "rootDir": "src", - "testRegex": ".*\\.spec\\.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - }, - "collectCoverageFrom": [ - "**/*.(t|j)s" - ], - "coverageDirectory": "../coverage", - "testEnvironment": "node" - } + "name": "backend", + "version": "0.0.1", + "description": "", + "author": "", + "private": true, + "license": "UNLICENSED", + "scripts": { + "prebuild": "rimraf dist", + "build": "nest build", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "start": "nest start", + "start:mac": "env $(cat be.env | grep -v '#' | xargs) npm start", + "start:dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json" + }, + "dependencies": { + "@liaoliaots/nestjs-redis": "^9.0.4", + "@nestjs/common": "^9.0.0", + "@nestjs/config": "^2.2.0", + "@nestjs/core": "^9.0.0", + "@nestjs/platform-express": "^9.0.0", + "cache-manager": "^5.1.3", + "class-transformer": "^0.5.1", + "class-validator": "^0.13.2", + "ioredis": "^5.2.4", + "reflect-metadata": "^0.1.13", + "rimraf": "^3.0.2", + "rxjs": "^7.2.0" + }, + "devDependencies": { + "@nestjs/cli": "^9.0.0", + "@nestjs/schematics": "^9.0.0", + "@nestjs/testing": "^9.0.0", + "@types/express": "^4.17.13", + "@types/jest": "28.1.8", + "@types/node": "^16.0.0", + "@types/supertest": "^2.0.11", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^8.0.1", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0", + "jest": "28.1.3", + "prettier": "^2.3.2", + "source-map-support": "^0.5.20", + "supertest": "^6.1.3", + "ts-jest": "28.0.8", + "ts-loader": "^9.2.3", + "ts-node": "^10.0.0", + "tsconfig-paths": "4.1.0", + "typescript": "^4.7.4" + }, + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "rootDir": "src", + "testRegex": ".*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "**/*.(t|j)s" + ], + "coverageDirectory": "../coverage", + "testEnvironment": "node" + } } diff --git a/backend/src/main.ts b/backend/src/main.ts index a5ded9d..ee6d12f 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -5,6 +5,6 @@ import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalPipes(new ValidationPipe()); - await app.listen(4000); + await app.listen(process.env.PORT); } bootstrap();