Python工程采用docker部署的示例

学术   2024-10-18 21:29   广东  

    对于一个python工程,当我们希望他的部署和运行不依赖特定的环境,且具备较好的可移植性,那么采用docker的方式进行部署会很适合。具体有以下这些好处:

  • 环境一致性:Docker允许你在开发、测试和生产环境中保持一致的环境配置。通过定义Dockerfile和其他配置文件,可以在不同阶段使用相同的设置,从而减少“在我的机器上可以运行”这类问题的发生。

  • 易于部署和扩展:Docker容器可以快速启动和停止,非常适合微服务架构。同时,Docker支持集群管理和负载均衡工具(如Docker Swarm、Kubernetes),使得水平扩展变得简单。

  • 资源隔离:每个Docker容器都有自己的文件系统、网络空间和其他系统资源,这意味着容器之间不会相互干扰。这有助于提高系统的安全性和稳定性。

  • ......

    具体地,在实践中怎么去构建呢?下面是一个简单的构建方式。

    由于Python工程在运行时不需要编译,是可以直接运行的,所以构建一个包含有所有Python所需依赖的环境即可。然后在docker中运行包含程序入口点__main__所在的.py(通常可以命名为main.py)即可:

所需文件

  • requirements.txt:指定python项目所需的所有外部依赖库&版本号

  • Dockerfile:构建docker image的依据文件

  • deploy.sh:创建docker等操作(可以包含运行docker,或push到远程进行部署)

requiements.txt内容

这里就是写明所部署项目所需要的python外部依赖库

一个例子:

Django==3.2.5numpy==1.21.2pandas==1.3.3requests==2.26.0flask==2.0.2sqlalchemy==1.4.23

利用pip可以根据这个文件内容进行安装,用法:

pip3 install -r requirements.txt

Dockerfile内容

对于python工程,我们在docker中需要指明python版本,然后根据requirements.txt去安装以来库,最后运行工程即可。

    下面是一个示例:

# 使用官方的 Python 运行时作为父镜像FROM python:3.8-slim
# 设置工作目录WORKDIR /app
# 将当前目录的内容复制到容器的工作目录中COPY . /app
# 安装所需的 Python 包RUN pip install --no-cache-dir -r requirements.txt
# 暴露服务端口(如果有的话)EXPOSE 8080
# 命令来运行你的 Python 应用程序CMD ["python", "main.py"]

depoly.sh脚本内容

    为了一键创建docker并允许,我们常常会写一个脚本,这个脚本主要就是创建docker并运行了,其他功能需要根据具体需求添加。

    示例:

#!/bin/bash
# 设置一些变量IMAGE_NAME="my-python-app"CONTAINER_NAME="my-running-container"
# 构建 Docker 镜像echo "Building Docker image..."docker build -t $IMAGE_NAME .
# 运行 Docker 容器echo "Running Docker container..."docker run -d --name $CONTAINER_NAME -p 8080:8080 $IMAGE_NAME
# 输出容器ID以便后续操作echo "Container ID: $(docker ps --format '{{.ID}}' | grep$CONTAINER_NAME)
# 输出完成信息echo "Done!"

控制工程研习
好好学习,天天向上
 最新文章