본문 바로가기
Study & Review/BackEnd Study

[백엔드] Docker (4) - Docker Compose란?

by 헤이즐넛 좋아하는 개발자 2024. 10. 13.

시작하기 전에

이번엔 Docker Compose라는 개념을 정리해보고자 한다. 출처는 저번과 동일하다.

출처: https://docs.docker.com/

 

개념은 아래 링크에서 확인할 수 있다 : 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에서 중지 버튼을 누르면 된다.