티스토리 뷰
도커를 운영 환경에서 적용하다보면 여러개의 컨테이너를 이용해야 하는 경우가 많은데 이렇게 여러 컨테이너를 관리할 때 필요한 것이 도커 컴포즈(docker-compose)이다. 이는 yml 포맷으로 기술된 설정 파일로 여러 컨테이너의 실행을 한번에 관리할 수 있게 해준다. 아래는 내가 개발하는 프로젝트에서 사용되고 있는 컴포즈 설정 파일이다.
version: '3'
services:
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
network_mode: host
eureka-service:
build: ./eureka-server
ports:
- "8761:8761"
network_mode: host
redis:
image: redis
ports:
- "6379:6379"
network_mode: host
zuul-service:
build: ./zuul-server
ports:
- "8765:8765"
environment:
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
- JWT_ACCESS_TOKEN_VALIDITY=${JWT_ACCESS_TOKEN_VALIDITY}
- JWT_REFRESH_TOKEN_VALIDITY=${JWT_REFRESH_TOKEN_VALIDITY}
- YAPP_17_RDS_URL=${YAPP_17_RDS_URL}
- YAPP_17_RDS_USERNAME=${YAPP_17_RDS_USERNAME}
- YAPP_17_RDS_PASSWORD=${YAPP_17_RDS_PASSWORD}
network_mode: host
depends_on:
- redis
- eureka-service
domain-service:
build: ./domain-service
ports:
- "8082:8082"
environment:
- YAPP_17_RDS_URL=${YAPP_17_RDS_URL}
- YAPP_17_RDS_USERNAME=${YAPP_17_RDS_USERNAME}
- YAPP_17_RDS_PASSWORD=${YAPP_17_RDS_PASSWORD}
- YAPP_17_S3_ACCESSKEY=${YAPP_17_S3_ACCESSKEY}
- YAPP_17_S3_SECRETKEY=${YAPP_17_S3_SECRETKEY}
network_mode: host
depends_on:
- zuul-service
- eureka-service
- version : yml 파일의 내용을 해석하는데 필요한 문법을 선언하는 것이다
- services : 아래의 nginx 와 여러개의 서비스들은 컨테이너 이름으로 아래에 다시 어떤 이미지를 실행할지가 정의된다
- ports : 전 포스팅에서 말했던 포트포워딩을 정의하는 것이다 (host:container)
- volumes : 컨테이너 안의 데이터를 공유하기 위해 사용하는 것이다
- host:container 방식으로 하여 호스트의 디렉토리를 컨테이너의 volume 디렉토리로 사용할 수 있도록한다
- depends_on : 서비스간의 종속성 순서를 정의하는 것이다
- Zuul-service에서 redis를 사용하므로 depends_on을 통해 실행 순서를 정해주었다
- enviornment : 컨테이너의 환경 변수를 지정해주는 것이다
docker-compose up -d
명령어를 사용하여 백그라운드로 도커 컨테이너들을 실행 시키면 된다
'Skill' 카테고리의 다른 글
[AWS] - Instance 사용자 계정 추가하기 (0) | 2021.06.16 |
---|---|
[GraphQL] - GraphQL 개념과 특징 (0) | 2021.06.16 |
[Docker] - Docker Network 모드 4가지 (0) | 2020.10.22 |
[Docker] - Docker의 개념 & 컨테이너로 애플리케이션 실행하기 (0) | 2020.10.20 |