66 lines
2.2 KiB
Docker
66 lines
2.2 KiB
Docker
# 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"] |