파이썬을 도커 컨테이너에서 어떻게 실행할까요?
안녕하세요, 야심찬 파이썬 개발자 여러분! 도커와 파이썬의 세계로 인도해드리게 되어 매우 기쁩니다. 컴퓨터 과학을 가르치고 있었던 많은 해 동안, 이 두 강력한 기술을 결합하면 개발 워크플로우에 혁신을 가져올 수 있다고 말씀드릴 수 있습니다. 그럼 이제 파이썬을 도커 컨테이너에서 어떻게 실행할 수 있는지 탐구해보겠습니다!
도커는 무엇이고 왜 중요한가요?
자세한 내용에 들어가기 전에, 도커가 무엇이고 왜 중요한지 이해해보겠습니다. 케이크를 만들 때를 상상해보세요. 당신은 레시피(코드), 재료(의존성), 그리고 주방 도구(개발 환경)를 가지고 있습니다. 이 모든 것을 함께 포장하고 어디서든 데려다 사용할 수 있다면 얼마나 멋질까요? 도커는 바로 당신의 파이썬 프로젝트에 대해 이와 같은 일을 합니다!
도커는 애플리케이션을 컨테이너에서 생성, 배포, 실행할 수 있게 해줍니다. 이 컨테이너는 가벼운 무게, 이동성, 일관성을 가진 환경으로, 도커가 설치된 모든 기계에서 실행할 수 있습니다. 이제 "하지만 내 기계에서는 잘 돌아간다"는 문제를永遠히 잊을 수 있습니다!
그럼 손을 더러워하고 파이썬을 도커 컨테이너에서 어떻게 실행할 것인가에 대해 배우겠습니다.
도커를 사용하여 파이썬을 실행하는 방법: Dockerfile을 사용하여
Dockerfile은 도커 컨테이너의 레시피와 같습니다. 이는 도커가 이미지를 빌드하는 데 사용할 지시사항을 포함하고 있습니다. 이 이미지는 컨테이너를 생성하는 데 사용됩니다. 파이썬 애플리케이션을 위한 간단한 Dockerfile을 만들어보겠습니다:
# 공식 파이썬 런타임을 부모 이미지로 사용
FROM python:3.9-slim
# 컨테이너 내 작업 디렉토리 설정
WORKDIR /app
# 현재 디렉토리 내용을 컨테이너의 /app에 복사
COPY . /app
# requirements.txt에 지정된 필요한 패키지 설치
RUN pip install --no-cache-dir -r requirements.txt
# 외부 세계로 port 80을 노출
EXPOSE 80
# 환경 변수 정의
ENV NAME World
# 컨테이너가 시작될 때 app.py 실행
CMD ["python", "app.py"]
이를 설명해보겠습니다:
-
FROM python:3.9-slim
: 도커가 공식 파이썬 3.9 이미지를 기반으로 사용하도록 합니다. -
WORKDIR /app
: 컨테이너 내 작업 디렉토리를 설정합니다. -
COPY . /app
: 현재 디렉토리 내용을 컨테이너의 /app에 복사합니다. -
RUN pip install --no-cache-dir -r requirements.txt
: 필요한 파이썬 패키지를 설치합니다. -
EXPOSE 80
: 외부 세계로 port 80을 노출합니다. -
ENV NAME World
: 환경 변수를 정의합니다. -
CMD ["python", "app.py"]
: 컨테이너가 시작될 때 실행할 명령을 지정합니다.
이제 간단한 app.py
파일을 만들어보겠습니다:
import os
name = os.environ.get('NAME', "World")
print(f"Hello, {name}!")
이 Docker 컨테이너를 빌드하고 실행하려면 다음 명령을 사용합니다:
docker build -t my-python-app .
docker run my-python-app
그러면 "Hello, World!"가 콘솔에 출력되어야 합니다.
도커를 사용하여 파이썬을 실행하는 방법: Docker Compose를 사용하여
Docker Compose는 도커 오케스트라의 지휘자와 같습니다. 여러 컨테이너를 정의하고 실행하는 도커 애플리케이션을 위한 도구입니다. 우리의 파이썬 애플리케이션을 위한 docker-compose.yml
파일을 만들어보겠습니다:
version: '3'
services:
web:
build: .
ports:
- "5000:80"
volumes:
- .:/app
environment:
- NAME=Docker Compose
이 파일은 Docker Compose가 다음과 같이 할 것을 지시합니다:
- Dockerfile을 사용하여 이미지를 빌드합니다.
- 호스트의 port 5000을 컨테이너의 port 80으로 매핑합니다.
- 현재 디렉토리를 컨테이너의
/app
에 마운트합니다. - 환경 변수
NAME
을 "Docker Compose"로 설정합니다.
이를 실행하려면 다음 명령을 사용합니다:
docker-compose up
도커 내 가상 환경에서 파이썬을 실행하는 방법
도커 컨테이너 내에서 파이썬을 가상 환경에서 실행하는 것은 과도한 것처럼 보일 수 있지만, 특정 상황에서 유용할 수 있습니다. 우리의 Dockerfile을 가상 환경을 포함하도록 수정해보겠습니다:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
이 Dockerfile은 /opt/venv
에 가상 환경을 생성하고 활성화한 후 필요한 패키지를 설치합니다.
결론
축하합니다! 지금까지 파이썬을 도커 컨테이너에서 Dockerfile, Docker Compose, 그리고 가상 환경을 사용하여 실행하는 방법을 배웠습니다. 이는 당신의 파이썬 개발 여정에서 매우 유용한 기술이 될 것입니다.
기억해야 할 점은, 도커는 일관성과 이동성을 중요시합니다. 도커를 사용하여 파이썬 애플리케이션을 모든 의존성과 함께 포장하고 어디서든 실행할 수 있어 배포와 협업 과정을 크게 간소화할 수 있습니다.
마무리하면서, 우리가 배운 주요 도커 명령을 요약한 표를 제공합니다:
명령 | 설명 |
---|---|
docker build -t <image-name> . |
Docker 이미지 빌드 |
docker run <image-name> |
Docker 컨테이너 실행 |
docker-compose up |
docker-compose.yml에 정의된 서비스 시작 |
docker-compose down |
컨테이너, 네트워크, 이미지, 볼륨 정리 |
계속 연습하고 탐구하며, 파이썬과 도커를 즐겨주세요! 기억하시라, 모든 마스터는 초보자였습니다. 여러분의 여정이刚刚 시작했고, 무엇을 만들어낼지 기대하고 있습니다. 행복하게 코딩하세요!
Credits: Image by storyset