10-2. 도커 컴포즈의 오버라이드 파일
# 1. docker-compose.yml(공통 기본 파일)
services:
todo-web:
image: diamol/ch06-todo-list
ports:
- 80
environment:
- Database:Provider=Sqlite
networks:
- app-net
# 2. docker-compose-v2.yml(오버라이드 파일)
services:
todo-web:
image: diamol/ch06-todo-list:v2
# 3. 도커 컴포즈 오버라이드 실행
docker-compose -f ./todo-list/docker-compose.yml -f ./todo-list/docker-compose-v2.yml config
# 4.도커 컴포즈 오버라이드를 이용하여 여러 환경용 컨테이너 실행
# 기존 컨테이너 제거
docker container rm -f $(docker container ls -aq)
# 개발 환경용
docker-compose -f ./numbers/docker-compose.yml -f ./numbers/docker-compose-dev.yml -p numbers-dev up -d
# 테스트 환경용
docker-compose -f ./numbers/docker-compose.yeml -f ./numbers/docker-compose-test.yml -p numbers-test up -d
# 인수 테스트 환경용
docker-compose -f ./numbers/docker-compose.yml -f ./numbers/docker-compose-uat.yml -p numbers-uat up -d
10-3. 환경 변수와 비밀값을 이용해 설정 주입하기
# 1. 웹 서비스와 비밀값이 정의된 기존의 컴포즈 파일(비밀값이 정의되어있지 않아 단독으로 사용 시 유효하지 않다)
service:
todo-web:
image: diamol/ch06-todo-list
secrets:
- source: todo-db-connection # 컨테이너 런타임이 비밀값을 읽어오는 곳
target: /app/config/secrets.json # 컨테이너 안에서 비밀값이 위치할 경로. 즉 위에서 읽어서 아래에 저장하라.
# 2. 개발 환경을 위한 추가 설정과 비밀값 정의됀 오버라이드 파일
service:
todo-web:
ports:
- 8089:80
environment: # 컨테이너 안에서만 사용되는 환경변수 추가
- Database:Provider=Sqlite
env_file: # 한줄에 하나씩 key=value로된 텍스트파일
- ./config/logging.debug.env
secrets:
todo-db-connections: # 의 실제 값이나 경로
file: ./config/empty.json
# 3. 호스트 컴퓨터의 환경 변수 값을 사용한 컴포즈 파일
todo-web:
ports:
- "${TODO_WEB_PORT}:80" # 호스트 컴 환경변수가 사용됨
environment:
- Database:Provider=Postgres
env_file:
- ./config/logging.information.env
networks:
- app-net
# 4. env 파일
# 컨테이너 설정값 - 공개 포트
TODO_WRB_PORT=8877
TODO_DB_PORT=5432
# 도커 컴포즈 실행 옵션
COMPOSE_PATH_SEPARATOR=;
COMPOSE_FILE=docker-compose.yml;docker-compose-test.yml
COMPOSE_PROJECT_NAME=todo_ch10
10-4. 확장 필드로 중복 제거하기
# 1. 도커 컴포즈 파일에 정의된 확장 필드
x-labels: &logging # labels의 확장 필드
logging: options:
max-size: '100m'
max-file: '10'
x-labels: &labels
app-name: image-gallery
# 2. 확장필드 적용
services:
iotd:
ports:
- 8080:80
<<: *logging
labels:
<<: *labels
public: api
10-5. 도커를 이용한 설정 워크플로 이해하기