Docker Compose
Docker Compose는 다중 컨테이너 애플리케이션을 정의하고 공유하는 데 도움이 되는 도구이다. Compose를 사용하면 YAML 파일을 생성하여 서비스를 정의할 수 있으며 단일 명령으로 모든 것을 가동하거나 해체할 수 있다.
Compose 사용의 가장 큰 장점은 어플리케이션 스택을 파일로 정의하고 이를 프로젝트 저장소의 루트에 보관하며 (이제는 버전 제어됨) 다른 사람이 프로젝트에 쉽게 기여할 수 있도록 할 수 있다는 것이다. 누군가는 저장소를 복제하고 Compose를 사용하여 앱을 시작하기만 하면 된다.
Compose 파일 생성
getting-started-app 디렉터리에 compose.yaml 파일을 만든다.
이제, compose.yaml 파일에서 서비스를 정의한다.
services:
app:
image: node:18-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 127.0.0.1:3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:8.0
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
-p 127.0.0.1:3000:3000 | 서비스에서 ports를 정의함으로 command의 일부를 마이그레이션 |
environment | 키를 사용하여 환경 변수 정의를 마이그레이션 |
플리케이션 스택 실행
docker compose up 명령을 사용하여 어플리케이션 스택을 시작한다. 백그라운드에서 모든 것을 실행하려면 -d 플래그를 추가한다.
docker compose up -d
Docker Compose가 볼륨과 네트워크를 생성한 것을 알 수 있다. 기본적으로 Docker Compose는 어플리케이션 스택을 위한 네트워크를 자동으로 생성한다 (이것이 Compose 파일에 네트워크를 정의하지 않은 이유).
docker compose logs -f 명령을 사용하여 로그를 확인한다. 단일 스트림으로 인터리브된 각 서비스의 로그를 볼 수 있다. 이는 타이밍 관련 문제를 감시하려는 경우 매우 유용다. -f 플래그는 로그를 따르므로 생성되는 대로 실시간 출력을 제공한다.
docker compose logs -f
작업을 모두 분해할 준비가 되면 전체 앱에 대해 docker compose down 명령을 하거나 Docker 대시보드에서 휴지통을 누르기만 하면 된다. 컨테이너가 중지되고 네트워크가 제거된다.
https://docs.docker.com/get-started/08_using_compose/
'Data-driven Methodology > Data Engineering' 카테고리의 다른 글
[Data Engineering] 데이터 파이프라인 빌드 (0) | 2024.01.23 |
---|---|
[Data Engineering] 다중 컨테이너 앱 (0) | 2024.01.23 |
[Data Engineering] 데이터베이스 유지 (0) | 2024.01.23 |
[Data Engineering] 어플리케이션 업데이트 (0) | 2024.01.23 |
[Data Engineering] 도커 (Docker) (0) | 2024.01.22 |