다중 컨테이너 애플리케이션을 정의하고 관리
하기 위한 도구YAML
파일을 사용(docker-compose.yml
)하여 여러 서비스가 연동되는 애플리케이션을 하나의 파일로 정의하고 쉽게 배포
할 수 있음 모든 서비스와 의존성을 명확하게 정의
하므로, 다양한 서비스의 설정을 자동화
할 수 있으며, 일관된 배포 프로세스
를 유지할 수 있습니다.서로 다른 프로젝트나 환경이 서로 영향을 주지 않습니다.
docker-compose.yml
파일을 중심으로 사용.docker-compose --version
docker-compose.yml
파일 작성docker-compose.yml
파일은 애플리케이션의 여러 서비스를 정의하는 데 사용docker-compose.yml
파일은 다음과 같이 작성할 수 있습니다:version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./web:/usr/share/nginx/html
networks:
- mynetwork
database:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db_data:/var/lib/mysql
networks:
- mynetwork
networks:
mynetwork:
volumes:
db_data:
위 파일에서:
services
: 웹 서버와 데이터베이스를 정의했습니다.networks
: volumes
: db_data
라는 볼륨에 저장docker-compose.yml
파일을 작성한 후, 다음 명령어로 애플리케이션을 실행할 수 있습니다:docker-compose up -d
-d
옵션은 백그라운드에서 컨테이너를 실행하는 데 사용docker-compose.yml
에 정의된 모든 서비스를 시작하고, 실행 중인 컨테이너를 관리하는 데 필요한 여러 명령어가 있습니다:
컨테이너 상태 확인:
docker-compose ps
로그 확인:
docker-compose logs
서비스 중지:
docker-compose stop
서비스 종료 및 제거:
docker-compose down
서비스 재시작:
docker-compose restart
.env
파일을 지원하여, 환경 변수로 설정된 값을 사용
할 수 있습니다. docker-compose.yml
에서 다음과 같이 정의할 수 있습니다:version: '3'
services:
web:
image: nginx:${NGINX_VERSION}
.env
파일에 다음과 같이 환경 변수를 정의합니다:NGINX_VERSION=latest
docker-compose.yml
파일에서 정의된 서비스가 .env
파일의 값을 참조하여 동작하게 됩니다.일관된 개발 환경
과 자동화된 배포 프로세스를 제공
하는 강력한 도구docker-compose.yml
파일을 작성하고, Docker Compose 명령어를 사용하여 애플리케이션의 전체 스택을 손쉽게 관리할 수 있습니다.