파이썬을 도커 컨테이너에서 어떻게 실행할까요?

안녕하세요, 야심찬 파이썬 개발자 여러분! 도커와 파이썬의 세계로 인도해드리게 되어 매우 기쁩니다. 컴퓨터 과학을 가르치고 있었던 많은 해 동안, 이 두 강력한 기술을 결합하면 개발 워크플로우에 혁신을 가져올 수 있다고 말씀드릴 수 있습니다. 그럼 이제 파이썬을 도커 컨테이너에서 어떻게 실행할 수 있는지 탐구해보겠습니다!

Docker Setting - Python

도커는 무엇이고 왜 중요한가요?

자세한 내용에 들어가기 전에, 도커가 무엇이고 왜 중요한지 이해해보겠습니다. 케이크를 만들 때를 상상해보세요. 당신은 레시피(코드), 재료(의존성), 그리고 주방 도구(개발 환경)를 가지고 있습니다. 이 모든 것을 함께 포장하고 어디서든 데려다 사용할 수 있다면 얼마나 멋질까요? 도커는 바로 당신의 파이썬 프로젝트에 대해 이와 같은 일을 합니다!

도커는 애플리케이션을 컨테이너에서 생성, 배포, 실행할 수 있게 해줍니다. 이 컨테이너는 가벼운 무게, 이동성, 일관성을 가진 환경으로, 도커가 설치된 모든 기계에서 실행할 수 있습니다. 이제 "하지만 내 기계에서는 잘 돌아간다"는 문제를永遠히 잊을 수 있습니다!

그럼 손을 더러워하고 파이썬을 도커 컨테이너에서 어떻게 실행할 것인가에 대해 배우겠습니다.

도커를 사용하여 파이썬을 실행하는 방법: 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"]

이를 설명해보겠습니다:

  1. FROM python:3.9-slim: 도커가 공식 파이썬 3.9 이미지를 기반으로 사용하도록 합니다.
  2. WORKDIR /app: 컨테이너 내 작업 디렉토리를 설정합니다.
  3. COPY . /app: 현재 디렉토리 내용을 컨테이너의 /app에 복사합니다.
  4. RUN pip install --no-cache-dir -r requirements.txt: 필요한 파이썬 패키지를 설치합니다.
  5. EXPOSE 80: 외부 세계로 port 80을 노출합니다.
  6. ENV NAME World: 환경 변수를 정의합니다.
  7. 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가 다음과 같이 할 것을 지시합니다:

  1. Dockerfile을 사용하여 이미지를 빌드합니다.
  2. 호스트의 port 5000을 컨테이너의 port 80으로 매핑합니다.
  3. 현재 디렉토리를 컨테이너의 /app에 마운트합니다.
  4. 환경 변수 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