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
'인프라 > docker' 카테고리의 다른 글
Kompose 로 docker-compose.yml 을 쿠버네티스용 yaml 로 변환하고, 쿠버네티스에 배포하기 (0) | 2025.01.17 |
---|---|
docker로 Spring Boot App, Postgres 이미지 만들어서 실행시키기 (0) | 2025.01.10 |
2024 12 3 - Docker로 Spring Boot Application 실행하기(Feat. Dockerfile) (0) | 2024.12.03 |
2024 12 2 TIL - Docker (1) | 2024.12.02 |