如何为streamlit应用程序创建Dockerfile

5anewei6  于 2022-11-28  发布在  Docker
关注(0)|答案(3)|浏览(159)

我打算部署一个用Sreamlit编写的Web应用程序,

我可以通过在命令行中运行streamlit run Home.py,在本地计算机上运行此命令。
但是,我不确定如何创建Docker文件。
有什么建议吗?

svmlkihl

svmlkihl1#

为了对接您的应用程序,您需要两个文件:
1.停靠文件:描述图像结构,

  1. docker-compose.yml:我是一个很好的编辑器。描述如何从该映像制作容器(Dockerfile
    Javier Roger的答案是提供一个非常小的Dockerfile,看起来可以工作:
FROM python:3.7

# Expose port you want your app on
EXPOSE 8080

# Upgrade pip and install requirements
COPY requirements.txt requirements.txt
RUN pip install -U pip
RUN pip install -r requirements.txt

# Copy app code and set working directory
COPY . .
WORKDIR /app

# Run
ENTRYPOINT [“streamlit”, “run”, “Home.py”, “–server.port=8080”, “–server.address=0.0.0.0”]

如果您将此答案与以下docker-compose组合在一起,那么您就拥有了一个包含您的应用的不错容器:

services:
  streamlit:
    container_name: "The name you want your container to have"
    build:
      dockerfile: ./Dockerfile
      context: ./
    ports:
      - 'The port you want your app to have:8080'

请注意,Dockerfiledocker-compose.yml都应放置在应用的根目录中。
要运行应用程序,只需将cd转到根目录并运行:

docker compose up -d

如果没有安装Docker Composer,请使用:

sudo apt-get update
 sudo apt-get install docker-compose-plugin

如果你不能安装它这么容易使用此链接

7gcisfzg

7gcisfzg2#

试试这个。

FROM python:3.7

# Expose port you want your app on
EXPOSE 8080

# Upgrade pip and install requirements
COPY requirements.txt requirements.txt
RUN pip install -U pip
RUN pip install -r requirements.txt

# Copy app code and set working directory
COPY . .
WORKDIR /app

# Run
ENTRYPOINT [“streamlit”, “run”, “Home.py”, “–server.port=8080”, “–server.address=0.0.0.0”]
7kjnsjlb

7kjnsjlb3#

这是一个适合你的docker文件:

FROM python:3.9
WORKDIR /app
COPY requirements.txt ./requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 8201
ENTRYPOINT ["streamlit", "run"]
CMD ["app/Home.py"]

这是一系列的指令,每个指令创建一个层。这里的基本映像是python:3.9,在这里你创建一个名为/app的目录,然后复制并安装requirements.txt中的所有内容。然后复制整个文件夹,最后指定在容器中运行的命令。当你运行容器时,它将在8201端口上公开。
如果你打算在本地安装,用下面的命令构建并运行容器。

docker build -f Dockerfile -t app:latest .
docker run -p 8201:8201 app:latest

现在,您将能够在浏览器上访问http://localhost:8201/的容器

相关问题