python项目打包成docker镜像并运行的完整指南

 更新时间:2025年09月10日 10:08:23   作者:onlygyl  
这篇文章主要为大家详细介绍了python如何将项目打包成docker镜像并运行,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

众所周知,python是解释型脚本语言,无需编译即可运行,但是同时也强依赖于运行环境,而将运行环境和项目程序一同打包到docker镜像中,可以方便快速的移植部署。(以下方法为手动拷贝项目到linux服务器,如果需要可以使用git对代码进行管理)

假设你的项目目录结构如下:

1.创建requirements.txt

在项目根目录下创建requirements.txt文件,用于记录项目运行所需的所有第三方库及其精确版本。

Logbook==1.7.0.post0
pandas==2.0.3
PyMySQL==1.1.1
Requests==2.32.3
Flask==2.0.3
werkzeug==2.0.3

2.创建Dockerfile

在项目根目录创建Dockerfile文件。

# Python基础镜像
FROM docker.m.daocloud.io/library/python:3.8-slim

# 设置工作目录
WORKDIR /

# 复制requirements.txt文件
COPY /requirements.txt .

# 安装依赖(官方源速度较慢,使用阿里源)
RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

# 复制应用程序代码
COPY ./ .

# 暴露端口(如果你的应用需要)
EXPOSE 5000

# 定义环境变量(可选)
# ENV FLASK_APP=main.py
# ENV FLASK_ENV=production

# 运行命令
CMD ["python", "app.py"]

3.创建.dockerignore文件

防止不必要的文件被复制到镜像中,在根目录下创建.dockerignore文件

__pycache__
*.pyc
*.pyo
*.pyd
.Python
env
venv
.venv
.git
.DS_Store

4.构建Docker镜像

docker build -t zhgc-tools .

5.运行容器

docker run -d -p 5000:5000 --name zhgc-tools zhgc-tools

查看容器运行情况,说明服务正常部署

6.方法补充

python 项目打包 docker镜像

1.Dockerfile

这是创建容器的启动和编译的脚本(项目内的文件路径最好用全路径)

	# 将官方 Python 运行时用作父镜像
	FROM python:3.8-alpine
	# 设置时区
	ENV TZ Asia/Shanghai
	RUN apk --update add tzdata && \
	 cp /usr/share/zoneinfo/${TZ} /etc/localtime && \
	 echo ${TZ} > /etc/timezone && \
	 apk del tzdata
	# 工程文件导入到容器中
	ADD ./CloudSimPy-master /code
	# 依赖文件导入
	COPY requirements.txt ./
	# 安装 requirements.txt 中指定的任何所需软件包
	RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
	# 将工作目录设置为 /myapps
	WORKDIR /code
	# 定义环境变量
	ENV PYTHONPATH /code
	# 在容器启动时运行 app.py
	CMD ["python", "/code/playground/Non_DAG/launch_scripts/state-makespan_list-50.py"]

2.requirements.txt

这是python 项目需要的依赖的版本对应

simpy==3.0.11
tensorflow==1.12.0
numpy=1.15.3
pandas==0.23.4
colorlog

构建镜像

# 名称必须小写
docker build -t flask_redis_env0 .

导出编译好的镜像

经过编译没有错误后,可以将镜像导出本地

# 打一个tag 方便后续load 时候有版本等相关信息
docker tag 7ed7399ab6fc wordhot:v1
# 打包一个,f299f501774c 是对应的 image id
docker save f299f501774c > hangger_server.tar
# 打包多个
docker save -o images.tar postgres:9.6 mongo:3.4

导入镜像

docker load < hangge_server.tar

到此这篇关于python项目打包成docker镜像并运行的完整指南的文章就介绍到这了,更多相关python打包成docker镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python的MongoDB模块PyMongo操作方法集锦

    Python的MongoDB模块PyMongo操作方法集锦

    这篇文章主要介绍了Python的MongoDB模块PyMongo操作方法集锦,包括数据的增删查改以及索引等相关的基本操作,需要的朋友可以参考下
    2016-01-01
  • django数据模型(Model)的字段类型解析

    django数据模型(Model)的字段类型解析

    这篇文章主要介绍了django数据模型(Model)的字段类型,文中给大家提到了django数据模型on_delete, db_constraint的使用,需要的朋友可以参考下
    2019-12-12
  • python自动化测试之从命令行运行测试用例with verbosity

    python自动化测试之从命令行运行测试用例with verbosity

    这篇文章主要介绍了python自动化测试之从命令行运行测试用例with verbosity,是一个较为经典的自动化测试实例,需要的朋友可以参考下
    2014-09-09
  • numpy之sum()的使用及说明

    numpy之sum()的使用及说明

    这篇文章主要介绍了numpy之sum()的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python中map、any、all函数用法分析

    python中map、any、all函数用法分析

    这篇文章主要介绍了python中map、any、all函数用法,实例分析了map、any、all函数的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • Python3.6实现带有简单界面的有道翻译小程序

    Python3.6实现带有简单界面的有道翻译小程序

    本文通过实例代码给大家介绍了基于Python3.6实现带有简单界面的有道翻译小程序,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-04-04
  • 基于python实现ROC曲线绘制广场解析

    基于python实现ROC曲线绘制广场解析

    这篇文章主要介绍了基于python实现ROC曲线绘制广场解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • python打包发布pypi及更新全部流程

    python打包发布pypi及更新全部流程

    这篇文章主要介绍了python打包发布pypi及更新全部流程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • python字符串的index和find的区别详解

    python字符串的index和find的区别详解

    这篇文章主要介绍了python字符串的index和find的区别,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Python实现固定列宽文本格式化终极指南

    Python实现固定列宽文本格式化终极指南

    在数据处理和展示领域,固定列宽格式化是提升可读性和专业性的关键技术,本文将深入解析Python固定列宽格式化方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-08-08

最新评论