FROM python:3.9-slim # 비 root 사용자 생성 및 권한 설정 RUN useradd -m -u 1000 streamlit WORKDIR /app RUN apt-get update && apt-get install -y \ build-essential \ curl \ software-properties-common \ git \ && rm -rf /var/lib/apt/lists/* # 1. requirements.txt 복사 (이 파일에는 numpy 관련 라인이 없음) COPY requirements.txt ./ # 2. requirements.txt에 명시된 모든 라이브러리 설치 RUN pip3 install --no-cache-dir -r requirements.txt # 3. Streamlit 설정 디렉토리 생성 및 권한 설정 RUN mkdir -p /home/streamlit/.streamlit && \ chown -R streamlit:streamlit /home/streamlit/.streamlit && \ chown -R streamlit:streamlit /app # 4. NumPy 및 Pandas 호환성 확인 RUN python -c "import numpy; print('NumPy version:', numpy.__version__)" RUN python -c "import pandas; print('Pandas version:', pandas.__version__)" RUN python -c "import numpy._core; print('Successfully imported numpy._core')" || \ python -c "import numpy.core; print('Using numpy.core fallback')" # 애플리케이션 및 데이터 파일 복사 COPY streamlit_app.py ./ COPY 광고카피데이터_브랜드추출완료.xlsx ./ COPY copy_embeddings.pkl ./ # 모든 파일 권한을 streamlit 사용자에게 할당 RUN chown -R streamlit:streamlit /app # 비 root 사용자로 전환 USER streamlit # Streamlit 설정 ENV STREAMLIT_CONFIG_DIR=/home/streamlit/.streamlit ENV HOME=/home/streamlit EXPOSE 8501 HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health ENTRYPOINT ["streamlit", "run", "streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]