Docker-Compose로 다수의 Container 실행해보기
Airflow Docker docker-compose.yml 리뷰
Docker-Compose
소프트웨어가 다수의 Container로 구성된 경우 사용할 수 있는 툴 + 환경 설정 파일
docker-compose.yml로 수정
다양한 테스트 수행 가능
다양한 버전 개발 가능(dev, test, prod, …)
개별 Container를 따로따로 관리하는 것보다 훨씬 생산성이 높음
Docker Desktop에 포함되어 있음
명령어
docker-compose build
docker-compose up
: docker-compose.yml에 정의된 모든 Container를 한 번에 생성 및 실행
docker-compose pull
: docker-compose.yml에 정의된 모든 Image를 한 번에 다운로드
docker-compose push
: docker-compose.yml에 정의된 모든 Image를 한 번에 업로드
docker-compose ps
: 동작 중인 Container의 상태 확인
docker-compose down
: docker-compose.yml에 정의된 모든 Container를 한 번에 정지 및 삭제
docker-compose start
docker-compose stop
docker-compose rm
docker-compose.yml
services: 프로그램을 구성하는 서비스 지정
각각의 서비스는 별개의 Docker Image, Docker Container로 구성
서비스별로 포트 번호, 환경변수, 디스크 볼륨 등 지정
volumes: 사용할 docker volume 지정
networks: 사용할 network 지정
healthcheck: Container의 서비스가 정상적으로 작동하는지 확인
depends_on: 해당 서비스를 실행하기 위해 먼저 실행되어야 하는 서비스 기술
environment: 해당 서비스가 Container 안에서 실행될 때 사용할 환경변수 지정
.yml, .yaml 둘 다 존재할 경우 에러 발생하므로 하나만 사용해야 함
-f
: 다른 이름의 파일 사용
docker-compose -f docker-compose_mac.yml up
services:
frontend:
build: ./frontend
ports:
- 3000:3000
backend:
build: ./backend
ports:
- 3001:3001
environment:
DB_URL: mongodb://database/vidly
database:
image: mongo:4.0-xenial
ports:
- 27017:27017
volumes:
- vidly: /data/db
volumes:
vidly:
docker-compose.yml
version
x-airflow-common
airflow-common이라고 부르는 별칭을 정의
여러 서비스에서 공유하는 공통 설정 정의
이를 anchor라고 부르며, yml 파일 블록을 계승이라는 형태로 재사용 가능하게 해줌
DAG에서 사용할 Python 모듈을 설치할 수 있음
services
postgres
redis
airflow-webserver
airflow-scheduler
airflow-worker
airflow-triggerer
airflow-init
volumes