MLOps/Docker

[Docker#12] Dockerfile RUN

j.d 2025. 5. 12. 16:59

Dockerfile을 구성하다 보면, 이미지 생성 단계에서 미리 필요한 소프트웨어나 패키지를 설치해야 할 경우가 많습니다.
이럴 때 사용하는 명령어가 바로 RUN입니다.

 

이번 글에서는 RUN 명령어의 역할과 사용법을 알아보겠습니다.

 

 

RUN이란?

RUN은 이미지를 생성(build)하는 과정 중에 명령어를 실행할 때 사용하는 Dockerfile 명령어입니다.

쉽게 말해, "이 이미지를 만들 때 미리 ~~를 설치해 줘"라고 지시할 수 있는 명령어입니다.

 

# 문법
RUN [명령어]

# 예시
RUN pip install -r requirements.txt

 

 

RUN vs ENTRYPOINT

둘 다 명령어를 실행하지만, 실행 시점이 완전히 다릅니다.

 

구분 RUN ENTRYPOINT
실행 시점 이미지 빌드 중 컨테이너 실행 시
용도 의존성 설치, 초기 환경 구성 앱 실행, 초기 동작 지정
예시 RUN pip install -r requirements.txt ENTRYPOINT ["python", "main.py"]
  • RUN: 이미지 안에 미리 환경을 구성
  • ENTRYPOINT: 컨테이너가 실행될 때 동작을 지정

 

실습

# 디렉토리 구조
.
├── Dockerfile
├── requirements.txt
└── main.py
# requirements.txt
requests
# main.py
import requests

res = requests.get("https://httpbin.org/get")
print("요청 성공:", res.status_code)
# Dockerfile
FROM python:3.11-slim

# 파일 복사 및 작업 디렉터리 설정
COPY . /app
WORKDIR /app

# 이미지 생성 시 pip로 패키지 설치
RUN pip install --no-cache-dir -r requirements.txt

# 컨테이너 실행 시 main.py 자동 실행
# ENTRYPOINT ["python", "main.py"] # 배포시
ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] # 디버깅용

 

 

컨테이너 내부에서 python을 실행시켰을 때 requests 버전이 확인되는 것으로 보아 패키지가 정상적으로 설치되었다는 것을 알 수 있습니다. 

 

run으로 패키지를 설치않았을 경우