Docker

[Docker] Docker compose

Dev.Congsik 2024. 8. 29. 17:03
728x90

Docker Compose란?

Docker Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하는 도구입니다. 이를 통해 여러 개의 Docker 컨테이너를 함께 관리하고 쉽게 설정할 수 있습니다. 예를 들어, 웹 애플리케이션이 프론트엔드, 백엔드, 데이터베이스 등 여러 구성 요소로 나뉘어 있다면 각각의 구성 요소를 독립된 컨테이너로 실행하는데, 이를 효율적으로 관리하기 위해 Docker Compose를 사용할 수 있습니다.

주요 기능:

  • 다중 컨테이너 애플리케이션 정의: 여러 개의 서비스를 정의하고 이를 하나의 YAML 파일 (docker-compose.yml)로 관리할 수 있습니다.
  • 다중 환경 지원: 개발, 테스트, 프로덕션 환경에 맞게 각기 다른 설정을 쉽게 적용할 수 있습니다.
  • 종속성 관리: 컨테이너 간의 의존성을 정의하여 특정 컨테이너가 실행되기 전에 필요한 다른 컨테이너가 먼저 실행되도록 관리합니다.
  • 명령어 단순화: 여러 컨테이너를 각각 실행하는 대신 docker-compose up 명령어 하나로 모든 컨테이너를 동시에 실행할 수 있습니다.

Docker Compose 구성 파일 (docker-compose.yml) 구조

docker-compose.yml 파일은 YAML 포맷을 사용하여 애플리케이션의 여러 서비스를 정의합니다. 기본 구조는 다음과 같습니다:

version: '3'  # 사용하고자 하는 Compose 파일 버전
services:
  web:
    image: nginx  # 웹 서버에 사용할 이미지
    ports:
      - "8080:80"  # 호스트의 8080 포트를 컨테이너의 80 포트로 연결
  db:
    image: mysql  # 데이터베이스에 사용할 이미지
    environment:
      MYSQL_ROOT_PASSWORD: example  # 환경 변수 설정
    volumes:
      - db_data:/var/lib/mysql  # 데이터 저장을 위한 볼륨 설정

volumes:
  db_data:  # 데이터베이스 데이터 저장을 위한 볼륨

Docker Compose 사용 예시

간단한 웹 애플리케이션 예시 (Nginx와 MySQL)

Nginx 웹 서버와 MySQL 데이터베이스를 사용하여 간단한 웹 애플리케이션 환경을 구성합니다.

 

1. 프로젝트 디렉터리 생성

mkdir myapp
cd myapp

 

 

2. docker-compose.yml 파일 작성 다음은 웹 서버(Nginx)와 데이터베이스(MySQL)를 실행하는 구성 예시입니다.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:
  • web: Nginx 웹 서버를 실행하며, 호스트의 ./html 디렉토리를 컨테이너의 /usr/share/nginx/html에 마운트하여 웹 파일을 제공.
  • db: MySQL 데이터베이스를 실행하며, MYSQL_ROOT_PASSWORD 환경 변수를 통해 루트 비밀번호를 설정.
  • depends_on: web 서비스가 db 서비스에 의존한다는 것을 명시. 즉, db가 먼저 실행된 후 web이 실행됨.

 

3. 웹 파일 준비 ./html 디렉토리를 만들고, 간단한 HTML 파일을 넣어봅니다.

mkdir html
echo "<h1>Hello Docker Compose</h1>" > html/index.html

 

4. Docker Compose 실행

다음 명령어로 모든 컨테이너를 실행할 수 있습니다.

docker-compose up
  • docker-compose up 명령어는 docker-compose.yml 파일에 정의된 모든 컨테이너를 실행합니다.
  • 웹 브라우저에서 http://localhost:8080으로 접속하면 Hello Docker Compose라는 메시지가 보입니다.
     

5. 백그라운드 실행

백그라운드에서 애플리케이션을 실행하려면 -d 옵션을 사용합니다.

docker-compose up -d

 

 

6. 컨테이너 중지 및 제거

모든 컨테이너를 중지하고 제거하려면 다음 명령어를 사용합니다.

docker-compose down

 

728x90

'Docker' 카테고리의 다른 글

[Docker] 명령어 (계속 추가)  (0) 2024.08.29
Docker?  (0) 2024.08.27