개발/Docker

#4 Docker Compose

Jinoo.keem 2025. 5. 4. 23:00
728x90

# 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

https://www.composerize.com/

 

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