본문 바로가기
Data-driven Methodology/Data Engineering

[Data Engineering] Docker Compose

by goatlab 2024. 1. 23.
728x90
반응형
SMALL

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/

 

Use Docker Compose

Using Docker Compose for multi-container applications

docs.docker.com

 

728x90
반응형
LIST