【问题标题】:How do you deploy a Streamlit app on App Engine (GCP)?如何在 App Engine (GCP) 上部署 Streamlit 应用程序?
【发布时间】:2020-03-21 22:35:38
【问题描述】:

我的目标是部署一个用 Sreamlit 编写的简单网络应用,例如

app.py

import streamlit as st
st.title('Hello World!')

我可以通过在命令行中运行 streamlit run app.py 在本地计算机上运行它。

但是,我不确定如何修改 GCP 的 App Engine 中的 app.yaml 文件来部署它。

有什么建议吗?

【问题讨论】:

    标签: google-app-engine deployment google-cloud-platform streamlit


    【解决方案1】:

    您可以为此使用 App Engine 柔性环境,因为您可以指定 custom runtime。要遵循的步骤是:

    1. 创建 Dockerfile:

      FROM python:3.7
      EXPOSE 8080
      WORKDIR /app
      COPY requirements.txt ./requirements.txt
      RUN pip3 install -r requirements.txt
      COPY . .
      CMD streamlit run app.py --server.port 8080
      

      我已更新 Dockerfile,因为 App Engine flex 要求服务器侦听端口 8080。

    2. 创建包含所需依赖项的 requirements.txt 文件:

      streamlit
      
    3. 创建 app.yaml 文件:

      runtime: custom
      env: flex
      

      app.yaml 和 Dockerfile 必须在同一个文件夹中。上面的app.yaml设置很基础,更多信息可以在documentation找到。

    然后部署你需要使用以下 gcloud 命令:gcloud app deploy

    【讨论】:

    • 您好。快速跟进;你会对 Cloud Run 做同样的事情吗?在大多数用例中,Cloud Run 是不是更好的 App Engine 版本?
    • 使用 Dockerfile 您也可以部署到 Cloud Run,您可以看到所有需要的步骤here。关于 Cloud Run 与 App Engine 哪个更好,这两种产品都是无服务器的,并且有其独特的功能。 Cloud Run 基于开源的 Knative,并提供按使用付费的计费模式。它还支持无服务器 VPC 连接器,因此您可以拥有与使用 App Engine Flex 时相同的存储产品连接性。
    • 与 GAE flex 相比,如果没有负载,Cloud Run 将缩放到 0,因此需要考虑这一点,因为如果所有服务实例都已关闭,您将收到预热请​​求闲置一段时间。
    • 很好的答案,谢谢!我还有一个小问题:有没有使用“标准”环境的选项?因为使用 flex 环境要麻烦得多
    • @Shgidi 我认为您现在应该可以使用它了,和以前一样,限制因素是您可以安装的库数量。使用 python 3+,您可以安装所需的任何库,如文档 state。然后你可以在所需的依赖项中包含 gunicorn 并在 port 8080 上运行它我自己没有尝试过,但我认为它可以工作。
    猜你喜欢
    • 2020-10-31
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2019-08-11
    • 2023-02-14
    • 2019-04-22
    • 1970-01-01
    相关资源
    最近更新 更多