이전에는 컨테이너를 하나씩 하나씩 동작 시켜서 번거로움이 있었다. 예를 들면 웹 어플리케이션을 테스트 하려면 웹 서버 컨테이너, 데이터베이스 컨테이너 두개의 컨테이너를 각각 생성해야했었다.
# Docker Compose
Docker Compose는 여러 컨테이너를 정의하고 함께 관리할 수 있도록 해주는 도구이다. 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의하고 컨테이너 묶음으로 관리할 수 있느 작업 환경을 제공하는 관리 도구이다.
# Docker Compose 주요 기능 (중요)
1. 서비스 정의
여러 서비스를 docker-compose.yml 파일에 정의할 수 있다. 각각의 서비스에 대한 이미지, 볼륨, 네트워크 등을 정의해서 동시에 관리할 수 있다.
2. 다중 컨테이너 환경 관리
docker compose up 명령어 하나로 모든 컨테이너를 동시에 시작하고, docker compost down으로 쉽게 종료 및 정리 할 수 있다.
3. 의존성 관리
depends_on 옵션을 통해 각 서비스의 실행 순서를 지정할 수 있다. 예를 들면 웹 애플리케이션이 실행되기 전에 데이터베이스가 먼저 실행되어야 하는 경우 의존성을 설정할 수 있다.
4. 네트워크 구성 자동화(중요)
Compose는 각 서비스 간의 통신을 위해 기본 네트워크를 자동으로 생성하고 설정할 수 있다. 여러 서비스가 분리된 네트워크에서 실행되도록 구성할 수 있다.
5. 환경 변수 사용
환경 변수 파일 (.env)을 통해 설정을 동적으로 관리할 수 있다. 이 방식을 사용하면 설정 변경 시 편리하고 보안 관리에도 도움이 된다.
# Docker Compose 주요 기능을 활용한 예시
예를 들어 웹 서버와 데이터베이스를 포함한 환경에서 docker-compost.yml 을 작성해보겠다.
ubuntu@docker:~/my-webdb$ vim docker-compose.yaml
version: "3.9"
service:
db:
image: mysql:8.0
enviroment:
MYSQL_ROOT_PASSWORD: example
web:
image: wordpress:5.7
ports:
- "80808:80"
enviroment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_PASSWORD: example
deponds_on:
- db
이 설정 파일을 사용하여 docker compose up -d 명령어를 실행하면, 데이터베이스와 웹 서버가 자동으로 실행되며 상호작용할 수 있다.
'OS > Docker' 카테고리의 다른 글
[Docker] 멀티 컨테이너 서비스 구성 (feat. Docker Compose) (1) | 2024.11.04 |
---|---|
[Docker] Python Flask 웹 서비스 배포 (1) | 2024.11.04 |
[Docker(go, shell-scr)] Multi-stage Build 이미지 경량화 (0) | 2024.11.04 |
[Docker] 데이터 지속성을 위한 Volume 구성 (0) | 2024.10.30 |
[Docker] scratch 이미지 경량화 (3) | 2024.10.28 |