2024 12 4 TIL - Docker Compose
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://emunhi.com/view/201912/31130747677?menuNo=10031