1. Dockerfile
- Docker Image 빌드시 사용되는 텍스트 파일
- 이미지의 빌드 과정을 스크립트로 정의하며, 명령어를 순차적으로 실행해 필요한 환경을 설정함
2. Dockerfile 생성
- touch Dockerfile
3. Dockerfile 키워드
FROM | 베이스 이미지 기술 |
COPY | 코드 복사 |
WORKDIR | working directory 지정 |
CMD | 컨테이너 시작시(docker run) 실행되어야 하는 명령어 지정 |
ENTRY POINT | 컨테이너 시작시(docker run) 실행되어야 하는 명령어 지정 |
ARG | docker image 빌드시 사용되는 환경변수. 최종 이미지에는 들어가지 않음 |
ENV | 컨테이너 실행시 사용되는 환경변수. 최종 이미지에 저장됨 |
USER | 컨테이너 실행시 사용할 유저 ID |
EXPOSE | 서비스 사용 포트번호 |
RUN | 빌드시 실행되어야 하는 명령들 RUN apt-get update && apt-get install -y curl |
- CMD vs. ENTRYPOINT
- 컨테이너 시작시 실행되어야 하는 명령어를 지정함
- ENTRYPOINT가 있어 CMD 값이 파라미터로 실행되는 경우
- CMD가 실행되는 경우
- 오버라이드시, ENTRYPOINT를 사용하면 더 복잡해짐 - 최대한 CMD만 사용할 것
- 컨테이너 시작시 실행되어야 하는 명령어를 지정함
4. Airflow 예시로 Dockerfile 살펴보기
FROM python:3.7-slim-buster
ENV DEBIAN_FRONTEND noninterative
# 이미지에도 최종 저장되는 부분
ARG AIRFLOW_USER_HOME=/usr/local/airflow
ARG AIRFLOW_VERSION=1.10.9
# 이미지에도 최종 저장되는 부분
COPY config/airflow.cfg ${AIRFLOW_USER_HOME}/airflow.cfg
# 빌드시 실행되는 명령
RUN chown -R airflow: ${AIRFLOW_USER_HOME}
# 빌드시 실행되는 명령
EXPOSE 8080 5555 8793
USER airflow
WORKDIR ${AIRFLOW_USER_HOME}
# /entrypoint.sh webserver
ENTRY POINT ["/entrypoint.sh"]
CMD["webserver"]
# /entrypoint.sh webserver
[출처] 데이터 엔지니어링 데브코스
'data engineering > docker' 카테고리의 다른 글
[Docker] Image 다운로드 후 설치하기 (0) | 2024.05.29 |
---|---|
[Docker] Docker hub (0) | 2024.05.29 |
[Docker] 프로그램 개발 프로세스 (0) | 2024.05.28 |
[Docker] Image (0) | 2024.05.28 |
[Docker] 개요 (0) | 2024.05.28 |