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镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解Javascript中的this关键字

    深入理解Javascript中的this关键字

    这篇文章主要介绍了深入理解Javascript中的this关键字,本文讲解了方法调用模式、函数调用模式、构造器调用模式、apply调用模式 中this的不同之处,需要的朋友可以参考下
    2015-03-03
  • Python作用域与名字空间原理详解

    Python作用域与名字空间原理详解

    这篇文章主要介绍了python作用域与名字空间原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python中Numpy与TensorFlow版本兼容问题完美解决办法

    Python中Numpy与TensorFlow版本兼容问题完美解决办法

    这篇文章主要给大家介绍了关于Python中Numpy与TensorFlow版本兼容问题的完美解决办法,确保Python版本与TensorFlow版本兼容是首要任务,因为不兼容的组合可能导致导入错误或其他运行时问题,需要的朋友可以参考下
    2024-07-07
  • 一文学会Python列表list的使用

    一文学会Python列表list的使用

    这篇文章主要为大家介绍了Python列表list的使用全面解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Python数据持久化shelve模块用法分析

    Python数据持久化shelve模块用法分析

    这篇文章主要介绍了Python数据持久化shelve模块用法,结合实例形式较为详细的总结分析了shelve模块的功能、原理及简单使用方法,需要的朋友可以参考下
    2018-06-06
  • Python2.7.10以上pip更新及其他包的安装教程

    Python2.7.10以上pip更新及其他包的安装教程

    今天小编就为大家分享一篇Python2.7.10以上pip更新及其他包的安装教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • pytorch中nn.RNN()汇总

    pytorch中nn.RNN()汇总

    这篇文章主要介绍了pytorch中nn.RNN()知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Python Scrapy框架第一个入门程序示例

    Python Scrapy框架第一个入门程序示例

    这篇文章主要介绍了Python Scrapy框架第一个入门程序,结合实例形式分析了Python Scrapy框架项目的搭建、抓取字段设置、数据库保存等相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • Window系统下Python如何安装OpenCV库

    Window系统下Python如何安装OpenCV库

    这篇文章主要介绍了Window系统下Python如何安装OpenCV库,本文分步骤给大家介绍的详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python整小时 整天时间戳获取算法示例

    python整小时 整天时间戳获取算法示例

    今天小编就为大家分享一篇python整小时 整天时间戳获取算法示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02

最新评论