# Python 3.10 slim 이미지 사용 (pyproject.toml에서 ^3.10 지정됨) FROM python:3.12-slim # 작업 디렉토리 설정 WORKDIR /app RUN mkdir -p /app/uploads # 시스템 패키지 업데이트 및 필요한 패키지 설치 RUN apt-get update && apt-get install -y \ curl \ gnupg \ wget \ libgbm-dev \ libnss3 \ build-essential \ libjpeg-dev \ zlib1g-dev \ libpng-dev \ dos2unix \ && apt-get clean && rm -rf /var/lib/apt/lists/* # Poetry 설치 RUN curl -sSL https://install.python-poetry.org | python3 - --version 1.8.3 # Google Chrome 설치 (최신 안정 버전) RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/googlechrome-linux-keyring.gpg \ && echo "deb [arch=amd64 signed-by=/usr/share/keyrings/googlechrome-linux-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list \ && apt-get update \ && apt-get install -y google-chrome-stable \ && rm -rf /var/lib/apt/lists/* # Chrome 환경 변수 설정 ENV CHROME_BIN=/usr/bin/google-chrome # Poetry 경로 환경 변수 설정 ENV PATH="/root/.local/bin:$PATH" # Poetry 설정 - 가상환경 생성하지 않음 (컨테이너 내에서는 불필요) RUN poetry config virtualenvs.create false # pyproject.toml과 poetry.lock을 복사 COPY pyproject.toml poetry.lock* /app/ # 전역 패키지 설치 (로컬 가상환경이 아닌 글로벌 설치) RUN poetry config virtualenvs.create false \ && poetry install --no-root # client_secret.json 파일이 있는지 확인하고 권한 설정 RUN if [ -f client_secret.json ]; then chmod 644 client_secret.json; fi # __pycache__ 디렉토리 정리 (빌드 시 생성될 수 있음) RUN find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true # 전체 앱 코드 복사 COPY . /app # run.sh를 복사하고 이름 변경 COPY run-prod.sh /app/run-prod.sh COPY run-celery.sh /app/run-celery.sh # 줄바꿈 문자 변환 및 실행 권한 부여 RUN dos2unix /app/run-prod.sh /app/run-celery.sh \ && chmod +x /app/run-prod.sh /app/run-celery.sh # 컨테이너 시작 시 스크립트 실행 CMD ["/app/run-prod.sh"]