O2Sound_ver2_final/backend/Dockerfile

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"]