도커 컴포즈 정의 파일 내용 살펴보기
도커 컴포즈
는 정의 파일을 그대로 실행하기 때문에 컴포즈 파일(docker-compose.yml)
이 반드시 필요하다.
작성방법은 간단하다.
ex) 아파치 컨테이너의 컴포즈 파일
version: "3"
services:
apa000ex2: # 컨테이너 이름
image: httpd # 사용할 이미지
ports:
- 8080:80 # 매핑할 포트 (호스트포트:컨테이너포트)
restart: always #
위에 있는 컴포즈 파일은 아래의 명령어랑 동일한 의미를 갖는다.
docker run --name apa000ex2 -d -p 8080:80 httpd
# 여기서 detach 모드는 docker-compose up을 실행할 때 옵션으로 -d를 붙여주면 됨
cf) restart도 있고 restart_policy도 있다.
- restart : 위에 있는 예시들 처럼 작성해주면 된다.
정책 | 의미 |
---|---|
"no" | 기본적인 정책값. 어떤 상황에서도 컨테이너가 재시작되지 않음 |
always | 항상 재시작 |
on-failure | exit 코드가 on-failure 에러를 발생시켰을 때 재시작 |
unless-stopped | 컨테이너가 종료되지 않는다면 항상 재시작 |
- restart_policy : restart 옵션을 대신에서 사용할 수 있는 옵션
ex) 작성 예시
...
restart_policy:
condition : on-failure
delay : 5s
max_attempts : 3
windows : 120s
옵션 | 의미 |
---|---|
condition | none, on-failure, any 중 하나를 선택하면 됨. (any가 default) |
delay | 재시작을 시도할 때 얼마나 기다릴 지 설정 (default: 5s) |
max_attempts | (기본적으로는 시도를 멈추지 않지만) 시도를 멈출 때까지 얼마나 많이 시도할 지 설정 |
windows | 재시작을 성공하기 전에 얼마나 기다릴 지 설정 (default : 즉시 결정) |
ex) 워드프레스 컨테이너의 컴포즈 파일
version: "3"
services:
wordpress000ex12:
depends_on:
- mysql000ex11
image: wordpress
networks:
- wordproess000net1
ports:
- 8085:80
restart: always
environment:
WORDPRESS_DB_HOST=mysql_host
WORDPRESS_DB_NAME=mysql_name
WORDPRESS_DB_USER=db_user
WORDPRESS_DB_PASSWORD=db_pwd
- depends_on : 서비스 간의 종속성을 표현.
1) docker-compose up을 실행한 경우 : wordpress000ex12
라는 컨테이너를 실행하기 전에 mysql000ex11
컨테이너를 만들고 실행하도록 설정된 것이다.
2) docker-compose up [SERVICE] 실행한 경우 : 도커 컴포즈 파일에 정의된 컨테이너(서비스)의 종속성을 자동으로 포함시킨다.
ex. docker-compose up wordpress000ex12
라고 실행했다면 mysql000ex11
컨테이너를 생성하고 시작할 것이다.
3) docker-compose stop : 종속된 순서에 따라 컨테이너를 종료시킨다. 즉, mysql000ex11 종료하기 전에 wordpress000ex12를 먼저 종료시킨다
위에 있는 컴포즈 파일은 아래의 명령어랑 동일한 의미를 갖는다.
docker run --name wordpress000ex12 -d -it --net=wordproess000net1
-p 8085:80
-e WORDPRESS_DB_HOST=mysql_host
-e WORDPRESS_DB_NAME = mysql_name
-e WORDPRESS_DB_USER = db_user
-e WORDPRESS_DB_PASSWORD = db_pwd
wordpress
컴포즈 파일의 항목
현재 compose 파일 포맷 최신버전 3.8
- 주 항목
항목 | 내용 |
---|---|
services | 컨테이너 정의 |
networks | 네트워크 정의 |
volumes | 볼륨 정의 |
- 자주 나오는 정의
| 항목 | docker run 커맨드의 해당 옵션 또는 인자 | |
| image | 이미지 인자 | 사용할 이미지 지정 |
| networks | --net | 접속할 네트워크 지정 |
| volumes | -v, --mount | 스토리지 마운트 설정 |
| ports | -p | 포트 설정 |
| environment | -e | 환경변수 설정 |
| depends_on | 없음 | 다른 서비스에 대한 의존관계 설정 |
| restart | --restart | 컨테이너 종료 시 재시작 여부 설정 |
구체적인 작성 방법 (p.234 ~ 246)
컴포즈 파일
도커 컴포즈로 만든 컨테이너
는 도커 엔진을 통해 여러 가지 명령을 내릴 수 있다.
물론, 해당 컨테이너의 내용이 바뀐다고 해서 도커 컴포즈 파일
에 영향을 끼치는 건 아니다.
예를 들어 컨테이너의 이름을 변경
했다고 해보자.
나중에 도커 컴포즈
로 컨테이너를 정지, 삭제하려고 한다면
컴포즈 파일에 기재된 이름과 컨테이너의 실제 이름이 일치하지 않기 때문에
컨테이너를 정지할 수 없다.
컨테이너를 생성하고 나서 도커 컴포즈에서 정의한 컨테이너의 이름을 변경
할 때도 마찬가지다.
'Docker' 카테고리의 다른 글
[Docker] Dockerfile reference - Format, Parser Directives (0) | 2023.08.21 |
---|---|
[Docker] 7-4. 도커 컴포즈 실행 (0) | 2023.05.31 |
[Docker] 7-2. 도커 컴포즈 설치 및 사용법 (0) | 2023.05.30 |
[Docker] 7-1. 도커 컴포즈란? (0) | 2023.05.30 |
[Docker] 6-6 도커 허브 등록 및 로그인 (0) | 2023.05.29 |