시작하기 전에
이번엔 Docker Compose라는 개념을 정리해보고자 한다. 출처는 저번과 동일하다.
개념은 아래 링크에서 확인할 수 있다 : Docker란?
[백엔드] Docker (1) - Docker란?
시작하기 전에오늘의집 회사에서 파트타임으로 일하면서 Docker를 사용해볼 기회가 생겼다.앞으로도 유용하게 사용할 개념이니 이번에 확실하게 정리해보고자 한다.출처: https://docs.docker.com/핵심
hazel-nut-library.tistory.com
핵심
- Docker compose를 활용하면 여러 개의 컨테이너(애플리케이션 스택)를 실행할 수 있다.
- docker-compose.yml 파일을 생성하여 코드를 작성하면 된다. 코드 작성은 GPT가 잘 해준다.
Create the Compose file
Dockerfile을 생성했던 위치, 애플리케이션의 루트 디렉토리에 YAML 파일을 생성한다. docker-compose.yml 이런 식으로 생성한다.
Define the App Service
예를 들면, 아래와 같이 작성할 수 있다. 내가 실제 작성했던 코드를 바탕으로 형식을 작성해보았다. 보통 어떤 컨테이너를 Docker Compose로 동시에 실행하고 싶다고 ChatGPT에게 물어보면 잘 작성해준다.
services:
{service_name}:
image: {image_name}
container_name: {container_name}
restart: {restart_policy} # 컨테이너의 재시작 정책 (예: always, unless-stopped 등)
ports:
- {host_port}:{container_port} # 호스트와 컨테이너 간 포트 매핑
environment:
- {ENV_VARIABLE}={value} # 환경 변수 설정
cap_add:
- {capability} # 컨테이너에 추가 권한 부여 (예: NET_ADMIN)
devices:
- {device_path} # 호스트의 특정 디바이스를 컨테이너에 연결
stdin_open: true # 표준 입력 열기
tty: true # TTY 세션 활성화
privileged: true # 권한 상승 모드 활성화
command: /bin/bash -c "{setup_command}" # 컨테이너 시작 시 실행할 명령
volumes:
- {host_path}:{container_path} # 볼륨 마운트 설정
network_mode: {network_mode} # 네트워크 모드 설정 (예: bridge, host, service:{service_name} 등)
depends_on:
{dependent_service}:
condition: {condition} # 의존 서비스가 특정 상태가 될 때까지 대기
{another_service_name}:
image: {another_image_name}
container_name: {another_container_name}
network_mode: service:{linked_service_name}
volumes:
- {host_path}:{container_path} # 컨테이너와 호스트 간 파일 공유 설정
working_dir: {working_directory} # 컨테이너 내 작업 디렉토리
command: /bin/bash -c "{setup_and_run_command}" # 컨테이너 시작 시 실행할 명령
Run the Application Stack
Docker compose를 통해 애플리케이션을 실행시키는 명령어다. docker compose up은 애플리케이션 스택을 실행시키는 것이고, -d flag를 추가하면 이를 백그라운드에서 실행할 수 있다.
docker compose up -d
Tear it all down
실행했던 애플리케이션 스택을 중단하고 싶을 때 쓰는 명령어다.
docker compose down
위 명령어를 실행하거나, Docker Dashboard에서 trash can 버튼을 누르거나, Docker Desktop에서 중지 버튼을 누르면 된다.
'Study & Review > BackEnd Study' 카테고리의 다른 글
[백엔드] Docker (3) - 컨테이너 실행 (0) | 2024.10.07 |
---|---|
[백엔드] Docker (2) - 이미지 빌드 (0) | 2024.09.13 |
[백엔드] Docker (1) - Docker란? (0) | 2024.09.11 |
[백엔드] 개발 도서관을 만들어보자 (0) | 2024.02.03 |