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 버전이 확인되는 것으로 보아 패키지가 정상적으로 설치되었다는 것을 알 수 있습니다.