컨테이너란?
- 애플리케이션 소스 코드를 임의의 환경에서 해당 코드의 실행에 필요한 OS 라이브러리 및 종속 항목과 결합하여 실행하는 표준 컴포넌트
- 기업들이 클라우드 컴퓨팅 환경으로의 이전을 선호하게 되면서 사용이 빈번해지고 있습니다
효율적인 개발 환경 구축
배포 편이성
민첩한 개발
서비스 무정지 환경 제공과 MSA 구축에 매우 유리합니다
FROM node:14
WORKDIR /wanted-sns/
COPY ./package.json /wanted-sns/
COPY ./yarn.lock /wanted-sns/
RUN yarn install
COPY . /wanted-sns/
CMD yarn start:dev
yarn install
명령을 실행합니다yarn install
로 생성이 되어 있기 때문입니다)yarn start:dev
를 통해 nest.js 어플리케이션을 실행합니다version: '3.7'
services:
backend-server:
build:
# 빌드할 도커파일의 경로를 지정해줍니다
context: .
dockerfile: Dockerfile
volumes:
# 코드들이 들어있는 src 폴더와 env 파일폴더를 함께 옮겨 바인드해줍니다
- ./env/.env:/wanted-sns/env/.env
- ./src:/wanted-sns/src
environment:
# 환경변수를 통해 타임존을 서울시간으로 변경해줍니다
- TZ=Asia/Seoul
ports:
# 주로 3000번을 사용했지만 프로젝트가 많아져 번호를 하나씩 올려 바꿔갔습니다
- 3003:3003
database-server:
# platform: linux/x86_64 # 윈도우 환경에 설치된 도커를 쓰신다면 이부분을 제외해주세요!
image: mysql:latest # 빌드할 이미지를 명시해줍니다
environment:
# 데이터베이스이름과 패스워드, 타임존을 설정해줍니다
MYSQL_DATABASE: 'sns'
MYSQL_ROOT_PASSWORD: 1178
TZ: 'Asia/Seoul'
ports:
- 3306:3306
version: '3.7'
services:
t-backend:
image: asia.gcr.io/civic-visitor-357217/t-backend:0.1.3
platform: linux/x86_64
build:
context: .
dockerfile: Dockerfile
environment:
- TZ=Asia/Seoul
ports:
- 3000:3000
server {
listen 80;
# index
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# hello-service
location /api {
proxy_pass http://hello-service:3000;
}
# error page
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
version: "3.8"
services:
api-gateway:
image: nginx:latest
volumes:
- ./api-gateway/default.conf:/etc/nginx/conf.d/default.conf
ports:
- 80:80
hello-service:
build:
context: ./app
dockerfile: Dockerfile
volumes:
- ./app/src:/hello-service/src
ports:
- 3000:3000