주니어 데이터 엔지니어 우솨's 개발일지

데이터 엔지니어링 49일차 TIL 본문

데브코스

데이터 엔지니어링 49일차 TIL

우솨 2024. 6. 5. 19:32

학습내용

.dockerignore란?
: 불필요한 Binary파일이나 패스워드가 들어있는 파일 등 개발자의 부주의로 인한 사고를 막기위함 및 깃업의 크기가 불필요하게 늘어나는 것을 방지한다.
- Image build할 때 추가하지 말아야할 파일들이나 폴더들 지정

Docker-Compose란?
- 다수의 컨테이너로 소프트웨어가 구성되는 경우 사용할 수 있는 툴 + 환경설정파일
    - docker-compose.yml로 설정
    - 다양한 테스트등도 수행이 가능하다
    - 다양한 버전을 만드는 것도 일반적이다(dev, test, pord등)
- 개별 컨테이너를 따로 관리하는 것보다 훨씬 더 생산성이 높다
- 환경설정 파일의 이름은 docker-compose.yml이나 docker-compose.yaml 이다

docker-dompose 명령어
build : 이미지를 빌드하거나 없으면 다운로드 받아온다
up : run과 비슷한 역할 (build=> create => start 순)
pull : 도커 허브에서 읽어올 수 있는 이미지들을 가져오고 기본적으로 그룹으로 적용이 된다
ps : 현재 관리되고 있는 컨테이너들의 상태를 보여준다(개별적)
ls : 현재 관리되고 있는 컨테이너들의 상태를 보여준다(그룹별로 보여줌)
down : 컨테이너 중지 및 삭제, 이미지는 삭제되지 않는다
start : 현재 중지된 컨테이너를 재실행하며, 새로운 컨테이너를 생성하지 않는다
stop : 현재 실행중인 컨테이너를 삭제하지 않고 중지시킨다
rm : 현재 중지된 컨테이너를 삭제한다

docker-compose.yml
- services : 프로그램을 구성하는 서비스들을 지정
    - 각 서비스는 별개의 Docker Image 지정과 Docker Container실행으로 구성된다
    - 각 서비스는 자신의 Dockerfile을 가지고 있어야하며 없을 시 docker hub등에서 이미지를 다운로드한다.
    - 서비스별로 포트번호, 환경 변수, 디스크 볼륨 등을 지정해야한다
    - 서비스 이름은 아무 이름이나 사용가능하다
- docker-compose build : build 키로 지정된 것들 대상
- docker-compose pull : docker hub에서 이미지들을 읽어오려고 함
- docker-images : 각 개별 이미지 앞에 폴더 이름을 prefix로 붙인다(docker hub에서 읽어온것 제외)

 

Docker-compose.yml 작성의 예


docker-compose 네트워킹
- docker끼리 네트워크 연결이 필요한 경우
    - services에 준 이름으로 호스트 이름이 생성된다.
    - 내부에 DNS 서버가 하나 생성되어 이름을 내부 IP로 변환해준다
- 별도로 네트워크를 구성하고 싶다면 : networks에 네트워크를 나열하고 네트워크를 적절하게 서비스에 지정해주어한다.

Airflow에서 Dag를 구현하며 특정 파이썬 모듈을 설치해야 한다면?
: x-airflow-common에서 _PIP_ADDITIONAL_REQUIREMENTS의 값을 변경
    Before: 
              _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-}
    After:
             _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:- yfinance pandas numpy}
=> _PIP_ADDITIONAL_REQUIREMENTS 뒤에 공백하나를 넣고 추가할 패키지들을(yfinance, pandas, numpy) 넣어주고 docker-compose up을 실행한다.