본문 바로가기
Minding's Programming/Airflow

[Airflow/Docker] Docker-compose.yaml 파일 해석

by Minding 2024. 7. 26.
728x90
반응형

Docker Compose?

 

Docker Compose는 1개 이상의 도커 컨테이너를 생성할 때 사용하는 스크립트 하나를 뜻하며, 컨테이너들의 설정을 관리(컨테이너 실행 순서, 컨테이너 네트워크 등)할 수 있도록 해주는 Docker의 기능 중 하나다.

 

스크립트는 docker-compose.yaml 이라는 이름의 파일에 컨테이너들의 설정 내용을 입력하면 되고, Docker Compose 서비스를 시작하기 위해서는 yaml 파일이 있는 디렉토리에서 아래 명령어를 입력하면 실행된다. (Docker 서비스가 설치되어 있다는 가정 하에)

sudo docker compose up

 

 

docker-compose.yaml 파일 해석

 

yaml 파일은 json이나 xml과 같이 key, value로 구성되며 계층적인 구조를 가졌다. 파이썬과 같이 들여쓰기 문법을 사용한다는 공통점도 있다.

 

1 Level 내용

  • version: 파일의 버전 정보
  • x-airflow-common: Extetion Fields (각 서비스에 공통 적용될 항목들 정의)
    • 공통 지정할 항목을 &을 붙여서 지정한다.

depends_on : 컨테이너의 실행 순서를 뜻함

  • services: 컨테이너로 실행할 서비스 정의

하단 redis의 경우 port 대신 expose 키가 있다. port 설정과 비슷하면서도 살짝 다르다. port의 경우에는 외부와 연결하는 port 번호를 말하는 것이지만, expose는 내부의 연결을 위한 번호라고 할 수 있다. 내부 컨테이너 간의 포트 번호 개념이라고 알고 있으면 될 것 같다.

웹서버의 경우 depends_on 설정에 따라 postgres, redis 컨테이너 실행 후에 작동된다.

* ports는 다른 컨테이너와 겹치지 않게 설정해야 한다.

  • volumes: 컨테이너에 할당할 volume 정의
# 볼륨에 대한 정보 확인하기 위한 명령어

# 볼륨 리스트 보기
sudo docker volume ls

# 볼륨 상세 보기
sudo docker volume inspect {volume_id}
  • networks: 컨테이너에 연결할 network 정의
# networks 작성 예시

networks
	networks_custom: # 새로 만들 네트워크 이름
    	driver: bridge
        ipam:
        	driver: default
            config: # 네트워크 주소값 설정
            	- subnet: 172.18.0.0/16
                  gateway: 172.18.0.1
# 네트워크에 대한 정보 확인하기

# 네트워크 리스트 보기
sudo docker network ls

# 네트워크 상세 보기
sudo docker network inspect {network_id}

 

 

 

728x90
반응형

댓글