본문 바로가기

data engineering/docker

[Docker] Dockerfile

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