-
[Docker] Image build 자동화를 위한 Shell Script 작성하기Docker 2021. 6. 11. 22:05728x90
👉 이미지 빌드를 위한 파일 압축 및 빌드 명령어를 자동화하기 위해 Shell Script에 작성하기
👉 해당 스크립트를 실행하기 위한 Task를 Airflow DAG에 추가하기
3-1) Shell Script 작성
👉 Docker 이미지 빌드를 위한 cmd 명령어 등 관련 명령어들 자동화 하기 위해 shell script에 작성
buildargs={"TIMESTAMP":"${TIMESTAMP}"}
# Image Build 시 필요한 파일들 압축 tar -cvf Dockerfile.tar.gz Dockerfile requirements.txt app.py ... # CLI 명령어 첫번째 전달 파라미터 -> $1 # Image TAG Name from Airflow DAG(current_dag_run_time) TIMESTAMP=$1 CMD="curl -X POST -H \"Content-Type:application/tar\" --data-binary \"@Dockerfile.tar.gz\" --unix-socket /var/run/docker.sock \"http://localhost/build?t={amazonaws.com}/keyword-dev:${TIMESTAMP}&buildargs=%7B%22TIMESTAMP%22%3A%22${TIMESTAMP}%22%7D\"" # Evaluate(execute) CMD in CLI eval $CMD
Shell Script 실행 명령어
# 첫번째 파라미터로 전달하는 값이 TIMESTAMP로 저장 source build_docker_image.sh 210611_2200
3-2) Airflow Task 작성
- Image build Shell Script를 실행하기 위한 Airflow Task를 작성하여 DAG로 돌리기(코드 실행 자동화)
current_dag_run_time = "{{ task_instance.xcom_pull('get_current_dag_run_time', key='return_value') }}" ... build_docker_image = BashOperator( task_id = 'build_docker_image', bash_command = "cd /data/KEYWORD_TRAIN && source build_docker_image.sh {}".format(current_dag_run_time), queue = "keyword_train", dag = dag )
- 해당 Task 실행 시 bash_command로 current_dag_run_time 이 Shell Script에 첫번째 인자 값으로 전달되어 TIMESTAMP를 정의할 수 있음.
- 이상 오늘의 삽질일기 끝!
여기저기 삽질도 해보고
날려도 먹으면서
배우는 게
결국 남는거다
- Z.Sabziller
'Docker' 카테고리의 다른 글
[Docker] Dockerfile $ 환경 변수 활용 방법 (0) 2021.06.25 [Docker] EXPORT vs ARG vs ENV 환경변수 생성 명령어 비교 (0) 2021.06.23 [Docker] Docker API를 활용한 도커 이미지 빌드하기 (0) 2021.06.03 [Docker] Dockerfile 도커파일 이미지 빌드 시 환경변수 전달 방법(Feat. ARG, ENV) (0) 2021.05.19 [Docker] 도커 기본 명령어 모음 (0) 2021.05.16