YAML 파일 작성
도커 컴포즈를 실 사용하기 위해 더 많은 옵션과 명령어를 공부해야 하고 YAML 파일 작성에도 익숙해야 한다. 기존에 사용하던 run 명령어를 YAML 파일로 변환해 사용하는 게 도커 컴포즈의 사용법이다.
YAML 파일은 버전, 서비스, 볼름, 네트워크 이렇게 총 4개의 정의 항목으로 구성된다. 가장 많이 사용하는 건 서비스 정의이고 볼륨과 네트워크 정의는 서비스로 생성된 컨테이너에 선택적으로 사용된다. 항목의 하위 항목을 정의하기 위해 2개의 공북으로 들여쓰기해서 상위 항목과 구분한다.
버전 정의
버전은 YAML 맨 윗 부분에 정의한다.
version: '3.0'
서비스 정의
서비스는 컨테이너로 구현된다. 하나의 프로젝트로서 도커 컴포즈에 의해 관리된다.
services:
my_container_1:
image:
my_container_2:
image:
여기서 image는 컨테이너를 생성할 때 사용할 이미지 이름을 설정하면 된다.
services:
web:
links:
- db
- db:database
- redis
links는 docker run의 —link와 같다. 다른 서비스에 서비스명만으로 접근할 수 있게 한다.
services:
web:
enviroment:
- MYSQL_ROOT_PASSWORD=mypassword
- MYSQL_DATABASE_NAME=mydb
environment는 docker run의 —env, -e와 같다. 서비스 컨테이너 내부에서 사용할 환경변수를 지정하고 딕셔너리나 배열 형태로 사용할 수 있다.
web:
command: [apachectl, -DFOREGROUND]
command는 컨테이너가 실행될 때 수행할 명령어를 설정한다.
web:
depends_on
- mysql
depends_on은 특정 컨테이너에 대한 의존 관계를 나타낸다.
web:
image:
ports:
- "8080"
ports는 서비스의 컨테이너를 개방할 포트를 설정한다.
web:
build: ./composetest
build 항목에 정의된 Dockerfile에서 이미지를 빌드해 서비스의 컨테이너를 생성하도록 설정한다.
web:
extends:
file: extend_compose.yml
service: extend_web
다른 YAML 파일이나 현재 YAML 파일에서 서비스 속성을 상속받게 설정한다.
네트워크 정의
driver을 정의해 서비스의 컨테이너가 브리지 네트워크가 아닌 다른 네트워크를 사용하도록 설정할 수 있다.
ipam(IP Address Manager)를 사용한다. subnet, ip 범위 등을 설정한다.
external은 YAML 파일을 통해 프로젝트 생성 시 네트워크를 생성하는 게 아니라 기존 네트워크를 사용하도록 설정한다.
공백은 탭을 적어주었는데 깨진다. 스페이스바 2번으로 바꿔서 적용하면 된다.
📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] : 도커 컴포즈 네트워크 (0) | 2022.03.10 |
---|---|
[Docker] : YAML 파일 작성(2) (0) | 2022.03.09 |
[Docker] : 도커 컴포즈의 프로젝트, 서비스, 컨테이너 (0) | 2022.03.08 |
[Docker] : docker-compose.yml 작성과 활용하기 (0) | 2022.03.07 |
[Docker] : 도커 컴포즈 설치하기 (0) | 2022.03.07 |
댓글