# Docker Compose ?
여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성. 하나의 묶음으로 관리할 수 있게 도와주는 툴
1. 여러 개의 컨테이너를 관리하는데 용이
여러개의 컨테이너로 이루어진 복잡한 애플리케이션을 한 번에 관리할 수 있게 해준다.
여러 컨테이너를 하나의 환경에서 실행하고 관리하는데 도움이된다.
2. 복잡한 명령어로 실행시키던 걸 간소화 시킬 수 있음
docker run -e MYSQL_ROOT_PASSWORD=pwsecret -d -p 3306:3306 -v 'C:/Users/zinooing/Downloads/docker-mysql/mysql_data:/var/lib/mysql' mysql
위와같은 복잡한 명령어를 docker compose up 로 간소화.
# 도커 컴포즈 파일
---------------------------------------------------------------
#0
docker run -- name webserver -d -p 80:80 ngninx
---------------------------------------------------------------
#1 compose.yml
services: # 하나의 컨테이너를 서비스라고 부르고, 그 서비스들을 모아두는 곳
my-web-server: # 내가원하는 서비스 이름
container_name: webserver # 쓰고싶은 컨테이너 이름
image: nginx # nginx라는 이미지를 기반으로 webserver컨테이너를 띄움
posts:
- 80:80
# 도커 컴포즈 CLI
docker compose up : compose.yml 에서 정의한 코드를 기반으로 foreground에서 실행
docker compose up -d : 백그라운드 실행
docker compose ps : 실행중인 도커 컴포즈
docker compose ps -a : 도커 컴포즈에서 정의된 컨테이너들
docker compose down : 컨테이너가 중지되고 삭제
docker compose logs : 컴포즈에서 정의된 컨테이너들의 로그
docker compose up --build : 이미지를 다시 빌드해서 컨테이너를 실행시켜야 할 때
docker compose pull : 컴포즈에 정의된 이미지를 다운받거나 업데이트 하는 용도
# MySQL를 컴포즈하는 예제
#0 mysql 실습
--------------------------------------------------------------------------
#1 terminal 명령어
docker run -e MYSQL_ROOT_PASSWORD=pwd1234 -p 3306:3306 -v /c/Users/zinooing/Desktop/selfwork/docker-practice/mysql_data:/var/lib/mysql -d mysql
--------------------------------------------------------------------------
#2 compose.yml
services:
my-db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: pwd1234
volumes:
- ./mysql_data:/var/lib/mysql
ports:
- 3306:3306
# dockerfile과 연계해서 사용
프로젝트 root에 dockerfile을 만들어놓고, 마찬가지로 root에 compose.yml을 작성한다.dockerfile 작성 후 docker build -t my-web-server . 명령어 대신 yml에 build를 작성하고 compose up 해준다.
services:
my-server:
build: . # dockerfile의 위치
ports:
- 8080:8080
docker compose up -d --build (--build 는 프로젝트를 기반으로 이미지가 매번 새로 만들어지기 때문에 작성)
# 유용한 사이트
Docker CLI로 작성할 수 있는 명령어는 전부 compose.yml 파일로 옮길 수 있다. 물론 반대도 가능하다.
Docker CLI -> compose.yml
Composerize
Say goodbye to sprawling docker commands and say hello to $ docker-compose up :) Looking for the reverse (Docker compose to docker run command(s)) ? Try Decomposerize Want to convert from Docker compose file formats ? Try Composeverter Paste your docker ru
www.composerize.com
compose.yml -> Docker CLI
https://www.decomposerize.com/
Decomposerize
Convert your docker compose file to $ docker run command(s) :) Paste your docker compose file content into the box below! Looking for the reverse (docker run command(s) to Docker compose) ? Try Composerize Want to convert from Docker compose file formats ?
www.decomposerize.com
'개발 > Docker' 카테고리의 다른 글
| #5 Docker 환경에서 Spring Boot 백엔드 실행 (2) | 2025.05.05 |
|---|---|
| #3 Dockerfile (1) | 2025.05.04 |
| #2 Docker Volume (0) | 2025.05.03 |
| #1 Docker CLI (5) | 2025.05.02 |
| #0 Docker (0) | 2025.05.02 |