0. Docker Compose란?
# 여러개의 컨테이너가 하나의 응용 프로그램으로 동작할 때
# 도커 컴포즈를 사용하면 두 개 이상의 컨테이너를 순서를 진행하여 한번에 실행할 수 있음
# 도커 컴포즈 내부 문법이 탭을 인식 못하므로 2개의 공백으로 하위 항목을 구분
# docker compose 내 모든 컨테이너 실행
docker-compose up
# docker compose 내 모든 컨테이너 종료
docker-compose down
# ==================================================
# Docker Compose 파일은 아래와 같이 생성
# ==================================================
# docker-compose.yml
version: "3.8"
services:
app:
image: node:12-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:5.7
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
web:
bulid:
context: [ docker file이 있는 경로]
dockerfile: [ docker file 명(디폴트 DockerFile) ]
args:
arg1: arg1
arg2: # 인수도 같이 지정 (bool 연산자는 ''로 둘러싸야함)
volumes:
todo-mysql-data:
# ==================================================
1. version
Compose file Version | Docker Engine release |
3.8 | 19.03.0+ |
3.7 | 18.06.0+ |
3.6 | 18.02.0+ |
3.5 | 17.12.0+ |
3.4 | 17.09.0+ |
3.3 | 17.06.0+ |
3.2 | 17.04.0+ |
3.1 | 1.13.1+ |
3 | 1.13.0+ |
2.4 | 17.12.0+ |
2.3 | 17.06.0+ |
2.2 | 1.13.0+ |
2.1 | 1.12.0+ |
2 | 1.10.0+ |
# 설치된 도커 엔진 버전 및 도커 컴포즈 버전에 따라 지원하는 콤포즈 파일 포멧 버전이 다르다
# 도커 컴포즈 파일 포멧 버전과 도커 엔진 버전에 대한 호환성은 아래 사이트에서 확인
# https://docs.docker.com/compose/compose-file/compose-versioning/
# 도커 콤포즈 파일 포멧 버전 [ 2.0 ] 이상은 도커 콤포즈 버전 [ 1.27.0 ] 이상 사용 권장
# e.g. version: '3.9'
version: []
# docker engine version 확인
docker version --format '{{.Server.Version}}'
# docker compose version 확인
docker-compose --version
2. services
services:
서비스_명:
image: 이미지_이름:태그
ports:
- "호스트_포트:컨테이너_포트"
command:
- 서비스 실행 커맨드
environment:
- 환경변수1=값1
- 환경변수2=값2
working_dir:
- 작업_디렉토리
volumes:
- 호스트_디렉토리:컨테이너_디렉토리:옵션
depends_on:
- 다른_의존_서비스_명
build:
context: DockerFile_위치_경로
dockerfile: DockerFile 명(디폴트 DockerFile)
# e.g. volumes의 옵션은 읽기 쓰기 가능에대한 옵션을 정의 가능
services:
volumes:
- 호스트_디렉토리:컨테이너_디렉토리:ro
3. volumes
volumes:
[전역 사용 볼륨 정의 명]:
driver: [볼륨 경로 드라이브 명 e.g. local, nfs, ..]
driver_opts:
type: [local 옵션을 사용할 경우 로컬 볼륨 정의 e.g. bind, none ]
o: [ 드리이브에 대한 옵션 정의 e.g. bind, ...]
device: [ 호스트 드라이브 매핑 경로 제공 ]
# e.g.
volumes:
backend_logs:
driver: local
driver_opts:
type: none
o: bind
device: /var/log/backend_logs
# 정의한 볼륨 리스트를 확인할 수 있다고 함
docker volume ls
# 좀 더 상세한 볼륨 정보 확인
docker volume inspect [VOLUME_NAME]
'Docker' 카테고리의 다른 글
[ Docker ] Nginx 헤더 취약점 방지 (0) | 2024.05.10 |
---|---|
[ Docker ] Jupyter Notebook 설치 (0) | 2024.04.05 |
[ Docker ] Dockerfile 작성 (0) | 2024.01.21 |
[ Docker ] Docker 명령어 활용 (0) | 2024.01.07 |
[ Docker ] 에러 대응 리스트 (0) | 2023.03.22 |