#wannabeeeeeee the best DataScientist

Docker Compose 본문

Data scientist/Docker

Docker Compose

맨사설 2025. 5. 11. 15:36
728x90

Docker Copmose란?

여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴이다.

Docker Compose를 사용하는 이유

  1. 여러 개의 컨테이너를 관리하는 데 용이
  2. 복잡한 명령어로 실행시키던 걸 간소화 시킬 수 있음

Docker Compose로 컨테이너를 실행

# compose.yml 파일 작성하기

services:
	my-web-server:
		container_name: webserver
		image: nginx
		ports: 
			- 80:80
  • services(my-web-server) : Docker Compose에서 하나의 컨테이너를 서비스(service)라고 부른다. 이 옵션은 서비스에 이름을 붙이는 기능이다.
  • container_name(web-server) : 컨테이너를 띄울 때 붙이는 별칭이다. CLI에서 --name web-server 역할과 동일하다.
  • image: nginx : 컨테이너를 실행시킬 때 어떤 이미지를 사용할 지 정의하는 명령어이다. $ docker run [이미지명]와 동일한 역할이다.
  • ports : 포트 매핑은 어떻게 할 지를 설정하는 옵션이다. CLI에서-p 80:80 역할과 동일하다.
  •  

자주 사용하는 Docker Compose CLI 명령어

아래 명령어들은 compose.yml이 존재하는 디렉토리에서 실행시켜야 한다.

# compose.yml에서 정의한 컨테이너 실행
docker compose up    # 포그라운드에서 실행
docker compose up -d # 백그라운드에서 실행

# compose.yml에 정의된 컨테이너 중 실행 중인 컨테이너만 보여준다. 
docker compose ps 

# compose.yml에 정의된 모든 컨테이너를 보여준다.
docker compose ps -a

# compose.yml에 정의된 모든 컨테이너의 로그를 모아서 출력한다.
docker compose logs

# 컨테이너를 실행하기 전에 이미지 재빌드하기
docker compose up --build # 포그라운드에서 실행
docker compose up --build -d # 백그라운드에서 실행

# 이미지 다운받기 / 업데이트하기
docker compose pull

# Docker Compose에서 이용한 컨테이너 종료하기
docker compose down

💡 Docker CLI vs Docker Compose 실행

Redis 실행

# Docker CLI
docker run -d -p 6379:6379 redis

# Docker Compose
# compose.yml 파일 작성하기
services:
	my-cache-server:
		image: redis
		ports: 
			- 6379:6379

 

MySQL 실행

# Docker CLI
docker run -e MYSQL_ROOT_PASSWORD=pwd1234 
	-p 3306:3306 
	-v /Users/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql 
    -d mysql
    
# Docker Compose
# compose.yml 파일 작성하기
services:
  my-db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: pwd1234
    volumes:
      - ./mysql_data:/var/lib/mysql
    ports:
      - 3306:3306

 

백엔드(Spring Boot) 실행

# Docker CLI

# Dockerfile 작성하기
FROM openjdk:17-jdk
COPY build/libs/*SNAPSHOT.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

# Spring Boot 프로젝트 빌드하기
./gradlew clean build

# Docker Compose
# compose.yml 파일 작성하기
services:
  my-server:
    build: .
    ports:
      - 8080:8080

# compose 파일 실행
docker compose up -d --build

build: . : compose.yml이 존재하는 디렉토리(.)에 있는 Dockerfile로 이미지를 생성해 컨테이너를 띄우겠다는 의미이다.

 

▣ 지금까지의 예제를 보면 Docker CLI로 작성할 수 있는 명령어는 전부 compose.yml 파일로 옮길 수 있다. 반대로 compose.yml에 작성한 모든 값은 Docker CLI로 나타낼 수 있다. 이를 편하게 변환해주는 사이트가 존재한다.

 

 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

 

728x90

'Data scientist > Docker' 카테고리의 다른 글

Docker File  (0) 2025.05.07
Docker 실습(2)  (1) 2025.05.06
Docker 실습(1)  (0) 2025.05.04
Docker 기본 개념  (0) 2025.05.04