1 분 소요

지난 번 윈도우 환경에서 리눅스 이미지 빌드 실습과 분석을 했다. 그렇다면 이번에는 도커 컨테이너를 실행하는 실습이다.

1. 실습 9 - 도커 컨테이너 실행

도커 컨테이너 실행은 run-container.ps1 파일만 실행한다.

.\scripts\run-container.ps1

run-container.ps1 파일 내부를 분석하면 다음과 같다.

# PowerShell 명령 실행 중 오류가 발생하면스크립트를 즉시 중단하도록 설정한다.
$ErrorActionPreference = "Stop"

# 현재 PowerShell 환경에 OPENAI_API_KEY가 설정되어 있는지 확인한다.
if (-not $env:OPENAI_API_KEY) {

    # API 키가 설정되어 있지 않으면 오류를 발생시키고 스크립트를 중단한다.
    #
    # 문자열 안의 백틱(`)은 PowerShell이 $env를 변수로 해석하지 않고
    # 설정 예시를 문자 그대로 출력하도록 한다.
    throw "OPENAI_API_KEY is not set. Example: `$env:OPENAI_API_KEY='sk-...'"
}

# 현재 PowerShell 환경에 OPENAI_DEFAULT_MODEL이 설정되어 있는지 확인한다.
if (-not $env:OPENAI_DEFAULT_MODEL) {

    # 모델 환경변수가 없다면 기본 모델을 설정한다.
    $env:OPENAI_DEFAULT_MODEL = "gpt-5.6-luna"
}

# openai-agents-workshop:1.0 이미지로 컨테이너를 생성하고 실행한다.
docker run `

  # 컨테이너가 종료되면 컨테이너를 자동으로 삭제한다.
  # Docker 이미지는 삭제하지 않는다.
  --rm `

  # 실행할 컨테이너의 이름을 지정한다.
  --name openai-agents-workshop-container `

  # 호스트의 8010번 포트를 컨테이너의 8000번 포트에 연결한다.
  #
  # 브라우저에서는 http://localhost:8010으로 접속한다.
  -p 8010:8000 `

  # 현재 PowerShell에 설정된 OpenAI API 키를
  # 컨테이너의 OPENAI_API_KEY 환경변수로 전달한다.
  -e OPENAI_API_KEY=$env:OPENAI_API_KEY `

  # 현재 PowerShell에 설정된 모델 이름을
  # 컨테이너의 OPENAI_DEFAULT_MODEL 환경변수로 전달한다.
  -e OPENAI_DEFAULT_MODEL=$env:OPENAI_DEFAULT_MODEL `

  # 실행할 Docker 이미지의 이름과 태그를 지정한다.
  openai-agents-workshop:1.0

위의 소스 파일에서 도커를 실행하는 내부 핵심 명령은 다음과 같다.

docker run --rm `
  -p 8010:8000 `
  -e OPENAI_API_KEY=$env:OPENAI_API_KEY `
  -e OPENAI_DEFAULT_MODEL=$env:OPENAI_DEFAULT_MODEL `
  openai-agents-workshop:1.0

그리고 도커 실행이 잘 동작하는 지 다른 파워셀에서 테스트한다.

.\scripts\test-api.ps1

웹 브라우저에서도 다음과 같이 확인한다.

http://localhost:8010/docs

2. 윈도우 네이티브 실행과 도커 컨테이너 실행 비교

항목 Windows Native Docker Container
Python Windows Python Linux Python
가상환경 .venv image layer
Source path C:\... /app
실행 uvicorn ... Docker CMD
API Key PowerShell env docker run -e
배포 재현성 환경 영향 있음 높음

핵심은 같은 Python 앱을 먼저 Windows에서 빠르게 디버깅하고, 배포 시 Linux image로 생성한다는 점이다.

댓글남기기