Dockerfile 작성 및 실행방법
Dockerfile 작성 및 실행방법
Docker Compose
Dockerfile 작성 및 실행방법
Dockerfile 작성법: 초보자를 위한 가이드
Docker는 컨테이너화된 애플리케이션을 손쉽게 배포하고 관리할 수 있는 강력한 도구입니다. Dockerfile은 이러한 Docker 이미지를 생성하기 위한 명령어 집합을 담고 있는 파일입니다. 이번 글에서는 Dockerfile을 작성하는 방법과 함께, 폴더 구조 및 실행 방법을 자세히 알아보겠습니다.
1. Dockerfile이란?
Dockerfile은 Docker 이미지를 만드는 데 필요한 모든 명령어를 포함하는 텍스트 파일입니다. 이 파일을 통해 어떤 환경에서 애플리케이션이 실행될지를 정의하고, 필요한 패키지와 파일을 설치하고 구성할 수 있습니다.
2. Dockerfile 기본 구조
Dockerfile의 기본 구조는 다음과 같습니다.
# 베이스 이미지 지정
FROM <이미지>
# 작업 디렉토리 설정
WORKDIR <디렉토리 경로>
# 파일 복사
COPY <소스 경로> <타겟 경로>
# 패키지 설치
RUN <명령어>
# 컨테이너 실행 명령어 지정
CMD ["<명령어>"]
각 명령어는 다음과 같은 기능을 수행합니다.
- FROM: 기본이 될 Docker 이미지를 지정합니다. (예:
FROM ubuntu:20.04
) - WORKDIR: 작업 디렉토리를 설정합니다. 이후 명령어는 이 디렉토리에서 실행됩니다.
- COPY: 호스트 시스템의 파일이나 디렉토리를 컨테이너 내의 지정된 위치로 복사합니다.
- RUN: 컨테이너가 빌드될 때 실행될 명령어를 지정합니다. 보통 패키지를 설치하는 데 사용됩니다.
- CMD: 컨테이너가 시작될 때 실행될 기본 명령어를 설정합니다.
3. 폴더 구조 설정
Dockerfile을 작성하기 위해서는 적절한 폴더 구조를 설정하는 것이 중요합니다. 아래는 Python 애플리케이션을 위한 예시 폴더 구조입니다.
my-python-app/
├── Dockerfile
├── requirements.txt
├── app.py
└── other_files/
└── ... (기타 필요한 파일들)
폴더 구조 설명
- my-python-app/: 프로젝트의 루트 디렉토리입니다.
- Dockerfile: Docker 이미지를 빌드하기 위한 설정 파일입니다.
- requirements.txt: Python 애플리케이션에서 필요한 패키지를 나열한 파일입니다.
- app.py: 실행할 Python 애플리케이션 코드 파일입니다.
- other_files/: 애플리케이션에 필요한 기타 파일들을 저장할 디렉토리입니다.
4. 간단한 예제
아래는 Python 애플리케이션을 위한 간단한 Dockerfile 예시입니다.
예제 Dockerfile
# Python 3.9 이미지 기반
FROM python:3.9
# 작업 디렉토리 설정
WORKDIR /app
# requirements.txt 복사 및 패키지 설치
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# 소스 코드 복사
COPY . .
# 애플리케이션 실행
CMD ["python", "app.py"]
Dockerfile 설명
- FROM python:3.9: Python 3.9이 설치된 Docker 이미지를 사용합니다.
- WORKDIR /app: 작업 디렉토리를
/app
으로 설정합니다. - COPY requirements.txt ./: 현재 디렉토리의
requirements.txt
파일을 컨테이너의 현재 작업 디렉토리로 복사합니다. - RUN pip install –no-cache-dir -r requirements.txt: 필요한 Python 패키지를 설치합니다.
- COPY . .: 현재 디렉토리의 모든 파일을 컨테이너의
/app
디렉토리로 복사합니다. - CMD [“python”, “app.py”]: 컨테이너가 시작될 때
app.py
를 실행합니다.
5. Dockerfile 실행 방법
Dockerfile을 작성한 후, Docker 이미지를 빌드하고 실행하는 방법은 다음과 같습니다.
1단계: Docker 이미지 빌드
터미널을 열고, Dockerfile이 있는 디렉토리로 이동한 후 다음 명령어를 실행하여 이미지를 빌드합니다.
docker build -t my-python-app .
-t my-python-app
: 빌드할 이미지의 이름을my-python-app
으로 설정합니다..
: 현재 디렉토리에서 Dockerfile을 찾습니다.
2단계: Docker 컨테이너 실행
이미지가 성공적으로 빌드되면, 다음 명령어를 사용하여 컨테이너를 실행할 수 있습니다.
docker run -p 5000:5000 my-python-app
-p 5000:5000
: 호스트의 5000 포트를 컨테이너의 5000 포트와 연결합니다.my-python-app
: 실행할 이미지를 지정합니다.
6. Dockerfile 작성 시 유의사항
- 명령어 순서: Dockerfile의 명령어는 위에서 아래로 실행됩니다. 따라서, 종속성을 잘 고려하여 순서를 정하는 것이 중요합니다.
- 레이어 최적화: Docker 이미지는 각 명령어 실행 시 새로운 레이어를 생성합니다. 가능한 한 RUN, COPY 등을 조합하여 레이어 수를 줄이면 이미지 크기를 최적화할 수 있습니다.
- 캐시 활용: Docker는 이전에 빌드한 레이어를 캐시로 사용합니다. 따라서 자주 변경되지 않는 부분은 위쪽에 두어 캐시를 활용하는 것이 좋습니다.