Python Web 项目的 Dockerfile

发布日期:2026-07-03 21:37:03   来源 : 杭州电子商务研究院    浏览量 :0
杭州电子商务研究院 发布日期:2026-07-03 21:37:03  
0

介绍

现在,Python 的强大功能已可通过FlaskStreamlit等框架用于基于 Web 的项目。这些项目允许开发人员将 Python 的数据整理和分析功能引入 Web。在部署和共享这些项目时,设置依赖项、要求、网络端口和执行环境的问题可能会阻碍开发和测试。为了解决这个问题,引入了Docker。Docker是一种开源产品,可在操作系统 (OS) 级别提供硬件虚拟化。本指南将演示如何使用 Docker 打包和发布基于 Python 的 Streamlit Web 应用程序。

本指南假设您至少具有中级 Python 知识并对 Streamlit 和 Docker 有基本的了解。

示例应用程序

考虑这样的场景:您想要构建一个增长计算器,根据增长率、初始投资和年限来确定投资的价值。

然后,此应用程序将作为您的开发人员组合的一部分进行共享。最重要的是,感兴趣的各方将能够轻松下载和运行您的项目。Web 是最常见的界面,因此您决定将项目基于 Web。由于它涉及数据分析,因此它将使用 Python。为了让收件人轻松设置和运行您的应用程序,您决定将其打包在 docker 中。

将以下代码复制到 Python 文件中并将其命名为app.py

      import streamlit as st

st.title("Hello Streamlit")
st.header("Calculate % Growth")
initial = st.number_input("Initial investment in USD")
yr = st.number_input("Growth Period in years")
growth = st.number_input("Growth Rate in %")
terminal_value = 0
current_val = initial
for year in range(int(yr)):
   current_val += growth * current_val
   terminal_value = current_val

# perform cashflow projections for the next 5 years
st.write(f'Terminal value of {initial} after {yr} years at a growth rate of {growth} is {terminal_value}')
    

该项目需要安装 Python 库才能运行。这些库将记录在requirements.txt文件中。将以下内容复制到您的requirements.txt文件中。

      streamlit
    

为了在 Docker 构建期间方便处理,将 Python 和需求文件放在一个文件夹中并将其命名为src/

Docker 设置

本项目所需的dockerfile主要要实现以下几个逻辑步骤:

  1. 创建基础映像
  2. 复制源代码
  3. 安装要求和依赖项
  4. 公开所需端口
  5. 在 Docker 环境中运行 Streamlit 应用程序

将以下 Docker 命令复制到文件中并将其命名为Dockerfile

      FROM python:3.8

ENV MICRO_SERVICE=/home/app/webapp
# set work directory
RUN mkdir -p $MICRO_SERVICE
# where your code lives
WORKDIR $MICRO_SERVICE

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN pip install --upgrade pip
# copy project
COPY src/ $MICRO_SERVICE
RUN pip install -r requirements.txt
EXPOSE 8501
CMD streamlit run app.py
    

运行项目

设置完这两个文件后,您就可以构建并运行映像了。要构建映像,请运行命令

      docker build -t myimage .
    

构建 Docker 镜像后,就可以运行 Docker 镜像了。

      docker run -p 8501:8501 myimage
    

结论

使用 Docker 打包和运送 Python Web 应用程序是担任 Python 开发人员和 DevOps 相关职位的开发人员必不可少的技能。为了进一步掌握这些技能,请进一步研究如何使用docker-compose在 Docker 上运行多容器应用程序。

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据