728x90
Streamlit App Dockerize
Streamlit App은 다양한 클라우드 플랫폼(AWS, GCP, Google 등)에 배포가 가능하며, 앱을 컨테이너화 하여 여러 클라우드 플랫폼에 배포할 수 있다.
Prerequisites
실행할 App을 다운로드 합니다.
소스는 Streamlit에서 제공하는 샘플 Repository를 활용합니다.
git clone https://github.com/streamlit/streamlit-example.git .
Dockerfile 만들기
# Base 이미지
FROM python:3.12-slim
# 2. 작업 디렉토리를 /app으로 설정
WORKDIR /app
# 3. 현재 디렉토리의 requirements.txt 파일을 컨테이너의 /app으로 복사
COPY requirements.txt /app/
# 4. requirements.txt에 명시된 패키지 설치
RUN pip3 install -r requirements.txt
# 5. 실행할 streamlit_app.py를 컨테이너 /app으로 복사
COPY streamlit_app.py /app/
# 6. 컨테이너가 수신할 포트 오픈
EXPOSE 8501
# 7. 컨테이너 헬스 체크
HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health
#8. 실행될 컨테이너 구성
ENTRYPOINT [ "streamlit", "run", "streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0" ]
Streamlit 버전 1.10.0 이상에서는 Streamlit 앱을 Linux 배포판의 루트 디렉터리에서 실행할 수 없습니다. 따라서 WORKDIR은 루트가 아닌 별도 디렉토리를지정해야 합니다. (예.
/app
)
(참고) github Issue:5239
Docker image 빌드
생성한 Dockerfile
을 streamlit
이미지 이름으로 빌드합니다.
docker build -t streamlit .
docker images
로 생성된 이미지 를 확인합니다.
REPOSITORY TAG IMAGE ID CREATED SIZE
streamlit latest bb9ac485406e 2 minutes ago 634MB
Docker 컨테이너 실행
컨테이너의 포트 8501을 서버의 8501 포트에 게시합니다.
docker run -p 8501:8501 streamlit
출력된 URL로 접속합니다.
Collecting usage statistics. To deactivate, set browser.gatherUsageStats to False.
You can now view your Streamlit app in your browser.
URL: http://0.0.0.0:8501
(결과)
Reference
728x90
반응형
'Language > Python' 카테고리의 다른 글
(Python) Poetry - 패키지 관리 도구 (0) | 2025.01.10 |
---|---|
(Python) Python Dotenv을 사용하여 환경 변수 관리하기 (0) | 2024.06.23 |
(Python) Streamlit 기본 (0) | 2024.03.03 |
PDF to Excel in Python (2) | 2024.01.28 |
Anaconda 가상환경 Window에서 Linux로 옮기기 (0) | 2022.06.12 |