- 컨테이너 개수에 따라 docker-compose.yml을 작성하는 방법은 기존과 크게 다르지 않다
- ports, 서비스 이름 등 중복되면 안 되는 옵션이 존재하기 때문에 중복되는 값이 있는지 확인해야 함
- 만약 특정 값이 중복되어 들어간다면 컨테이너가 정상적으로 생성되지 않거나 생성하는 과정에서 에러가 발생할 수 있음
docker-compose.yml
version: '3.8'
services:
example1:
container_name: example1
image: 'httpd:latest'
ports:
- 80:80
restart: always
example2: # 서비스 이름이 동일하면 컨테이너가 정상적으로 생성되지 않을 수 있습니다.
container_name: example2 # 컨테이너 이름이 동일하면 컨테이너 생성 시 에러가 발생합니다.
build: .
entrypoint: sh -c "python3 main.py"
restart: always
# 컨테이너 실행
sudo docker compose up
# 실행중인 컨테이너 목록 (-a : 중지된 컨테이너까지)
sudo docker compose ps -a
# 컨테이너 삭제 (-f : 강제로 중지한 후 삭제)
sudo docker rm -f example
depends_on
depends_on을 사용해 컨테이너 실행 순서 바꿔보기
기본적으로는 작성한 순서대로 컨테이너가 실행되지만 경우에 따라 특정 컨테이너가 먼저 실행되어야 하는 경우가 있다
예를 들어, django 컨테이너와 데이터베이스 컨테이너를 같이 띄우는 경우에는 데이터베이스 컨테이너가 먼저 생성되어야 django 컨테이너에서 데이터베이스에 연결할 수 있다
이 때, depends_on 옵션을 사용해 컨테이너간 실행 순서를 컨트롤!
docker-compose.yml
version: '3.8'
services:
example1:
container_name: example1
image: 'httpd:latest'
ports:
- 80:80
depends_on:
- example2 # 해당 컨테이너보다 먼저 실행되어야 하는 컨테이너를 지정합니다.
restart: always
example2: # 서비스 이름이 동일하면 컨테이너가 정상적으로 생성되지 않을 수 있습니다.
container_name: example2 # 컨테이너 이름이 동일하면 컨테이너 생성 시 에러가 발생합니다.
build: .
entrypoint: sh -c "python3 main.py"
restart: always
'Docker' 카테고리의 다른 글
Docker gunicorn django 프로젝트 컨테이너 생성 (1) | 2023.06.01 |
---|---|
Docker postgresql 컨테이너 생성 (1) | 2023.06.01 |
Docker entrypoint (1) | 2023.06.01 |
Dockerfile 이미지 빌드하기 (2) | 2023.06.01 |
Docker volume (4) | 2023.06.01 |