인프라/docker

2024 12 4 TIL - Docker Compose

Griotold 2024. 12. 4. 12:54

1. Docker Compose란?

Docker Compose는 여러 Docker 컨테이너를 정의하고 관리하기 위한 도구이다. YAML 파일을 사용하여 애플리케이션의 서비스, 네트워크, 볼륨 등을 구성한다. 이를 통해 복잡한 다중 컨테이너 애플리케이션을 쉽게 구축하고 실행할 수 있다. Docker Compose는 개발, 테스트, 프로덕션 환경에서 일관된 애플리케이션 배포를 가능하게 하며, 단일 명령으로 모든 서비스를 시작하거나 중지할 수 있다.

 

2. docker-compose.yml 파일 작성

프로젝트 루트 디렉토리에 docker-compose.yml 파일을 생성해야 docker compose 기능을 사용할 수 있다.

  • 예시
version: '3.8'

services:
  service-a:
    image: img-service-a
    ports:
      - "18080:8080"
    environment:
      - SERVICE_B_URL=http://service-b:8080
    depends_on:
      - service-b

  service-b:
    image: img-service-b
    ports:
      - "18081:8080"

networks:
  default:
    driver: bridge

depends_on

service_b 컨테이너가 실행된 후에 service-a가 실행되어야 한다는 의미다.

 

networks.default.driver: bridge

컨테이너 이름으로 호출하기 위해서는 사용자 지정 네트워크를 생성하여 해당 네트워크 안에 컨테이너들이 있어야 한다. docker compose 는 기본적으로 새로운 bridge network를 생성하여 각 서비스 컨테이너를 그 네트워크에 연결한다. 이 네트워크는 docker-compose.yml 파일에 정의된 모든 서비스가 서로 통신할 수 있도록 한다.

 

3. docker compose up

docker-compose.yml 파일을 만들었으니 실행 시켜보자.

docker compose up

 

service-a 와 service-b 8080 port로 실행중임을 확인할 수 있다.

 

4. docker compose up -d

-d 옵션을 주어서 백그라운드에서 실행되도록 해보자

 

docker ps 명령어를 통해 service-a, service-b 모두 떠있는 것을 확인할 수 있다.

 

네트워크 생성 확인

docker network ls

{프로젝트 루트 폴더명}_default 란 이름으로 새로운 네트워크가 생성된다.

프로젝트 루트 폴더명이 docker 이므로 docker_default

 

References

https://docs.docker.com/compose/

https://seosh817.tistory.com/387

https://learn.microsoft.com/ko-kr/dotnet/architecture/microservices/multi-container-microservice-net-applications/multi-container-applications-docker-compose

https://emunhi.com/view/201912/31130747677?menuNo=10031