Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

csct3434

[도커 공식문서 학습] 7. 도커 핵심 개념 정리 - 컴포즈 본문

Docker

[도커 공식문서 학습] 7. 도커 핵심 개념 정리 - 컴포즈

csct3434 2025. 3. 30. 02:32

Docker Compose란?

Docker Compose는 여러 개의 컨테이너로 이루어진 애플리케이션을 쉽게 정의하고 실행할 수 있도록 해주는 도구입니다. 하나의 컨테이너만 실행하는 간단한 애플리케이션은 docker run 명령어로 쉽게 실행할 수 있지만, 데이터베이스, 메시지 큐, 캐시 등 여러 개의 컨테이너를 함께 실행해야 하는 경우 설정이 복잡해질 수 있습니다.

Compose를 사용하면 모든 컨테이너와 그 설정을 하나의 compose.yaml 파일에 정의할 수 있으며, 단 한 줄의 명령어로 실행할 수 있습니다.

Dockerfile vs. Docker Compose

  • Dockerfile: 컨테이너 이미지를 빌드하는 방법을 정의한 명령어 파일
  • Docker Compose: 여러 개의 컨테이너를 정의하고 실행하는 방법을 정의한 파일

Docker Compose 파일은 종종 Dockerfile을 참조하여 필요한 컨테이너 이미지를 빌드하고 실행합니다.

실습: To-Do List 애플리케이션 실행하기

Docker Compose를 활용하여 간단한 To-Do List 애플리케이션을 실행해 보겠습니다. 이 애플리케이션은 Node.js로 개발되었으며 MySQL 데이터베이스를 사용합니다.

1. 애플리케이션 다운로드

먼저 샘플 애플리케이션을 클론합니다.

git clone https://github.com/dockersamples/todo-list-app
cd todo-list-app

2. compose.yaml 파일 살펴보기

프로젝트 디렉터리 안에는 compose.yaml 파일이 있으며, 이 파일에는 애플리케이션을 구성하는 서비스들의 설정이 포함되어 있습니다. 주요 내용은 다음과 같습니다.

services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - mysql
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: todolist
    volumes:
      - todo-mysql-data:/var/lib/mysql
volumes:
  todo-mysql-data:

이 파일에서는 Node.js 애플리케이션과 MySQL 데이터베이스를 실행하며, MySQL 데이터를 저장하기 위한 볼륨을 정의하고 있습니다.

3. 애플리케이션 실행

아래 명령어를 실행하여 애플리케이션을 실행합니다.

docker compose up -d --build

이 명령어를 실행하면 다음과 같은 작업이 수행됩니다.

[+] Running 5/5
✔ app 3 layers [⣿⣿⣿]      0B/0B            Pulled          7.1s
  ✔ e6f4e57cc59e Download complete                          0.9s
  ✔ df998480d81d Download complete                          1.0s
  ✔ 31e174fedd23 Download complete                          2.5s
  ✔ 43c47a581c29 Download complete                          2.0s
[+] Running 4/4
  ⠸ Network todo-list-app_default           Created         0.3s
  ⠸ Volume "todo-list-app_todo-mysql-data"  Created         0.3s
  ✔ Container todo-list-app-app-1           Started         0.3s
  ✔ Container todo-list-app-mysql-1         Started         0.3s
  • 애플리케이션에 필요한 컨테이너 이미지 다운로드 및 빌드
  • 내부 네트워크 생성
  • 데이터베이스 볼륨 생성
  • 컨테이너 실행

브라우저에서 http://localhost:3000에 접속하여 애플리케이션이 정상적으로 실행되는지 확인할 수 있습니다.

4. 실행 중인 컨테이너 확인

docker ps

위 명령어를 사용하면 실행 중인 컨테이너 목록을 확인할 수 있습니다.

5. 애플리케이션 종료 및 정리

애플리케이션을 종료하고 모든 리소스를 정리하려면 다음 명령어를 실행합니다.

docker compose down

만약 데이터까지 삭제하려면 --volumes 옵션을 추가합니다.

docker compose down --volumes

정리

이번 글에서는 Docker Compose를 사용하여 다중 컨테이너 애플리케이션을 쉽게 실행하고 관리하는 방법을 알아보았습니다. Docker Compose를 활용하면 복잡한 컨테이너 설정을 간소화하고 재현성을 높일 수 있습니다.

원문

https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-docker-compose/

 

What is Docker Compose?

What is Docker Compose?

docs.docker.com