여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴이다.
여러 개의 컨테이너를 관리하는 데 용이
여러 개의 컨테이너로 이루어진 복잡한 애플리케이션을 한 번에 관리할 수 있게 해준다. 여러 컨테이너를 하나의 환경에서 실행하고 관리하는 데 도움이 된다.
복잡한 명령어로 실행시키던 걸 간소화 시킬 수 있음
이전에 MySQL 이미지를 컨테이너로 실행시킬 때 아래와 같은 명령어를 실행시켰다.
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql
Docker Compose를 사용하면 위와 같이 컨테이너를 실행시킬 때마다 복잡한 명령어를 입력하지 않아도 된다. 단순히 docker compose up 명령어만 실행시키면 된다.
1. Dockerfile 작성 (DB에 경우 생략)
spring boot 프로젝트 실행한다면, Dockerfile작성FROM openjdk:17-jdk COPY build/libs/*SNAPSHOT.jar /app.jar ENTRYPOINT ["java", "-jar", "/app.jar"]2. 스프링 프로젝트 빌드
$ ./gradlew clean build3. compose.yml 생성
- Dockerfile과 같은 위치에 compose.yml파일을 생성한다.services: my-server: build: . ports: - 8080:80804. compose 실행
$ docker compose up -d --build
https://www.composerize.com/ (Docker CLI → compose.yml로 변환)
https://www.decomposerize.com/ (compose.yml → Docker CLI로 변환)