docker打包python程序

本文详细介绍了如何使用Docker进行Python项目的打包与部署,包括导出依赖、编写Dockerfile、制作镜像及运行镜像的步骤。同时提供了Docker常用命令汇总,帮助读者快速掌握Docker的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker安装文档:

https://docs.docker.com/docker-for-mac/#check-versions
http://www.runoob.com/docker/macos-docker-install.html

docker打包步骤(pipenv shell虚拟环境下python项目打包):

项目最终结构:
docker_test
├── Dockerfile
├── myapps
│ └── hello_world.py
└── requirements.txt
1 directory, 3 files
假设文件夹 myapps, 主入口文件 myapps/hello_world.py
(1)导出程序依赖包(生成 requirements.txt)
进入到hello_world.py目录,执行:

pipenv lock --requirements > requirements.txt

将生成的requirements.txt移动到Dockerfile同目录
(2)编写Dockfile
在docker_test目录下创建Dockfile文件,内容格式如下:

# 将官方 Python 运行时用作父镜像
FROM python:3.7
# 将工作目录设置为 /myapps
WORKDIR ./myapps
# 将当前目录内容复制到位于 /myapps 中的容器中
ADD . .
# 安装 requirements.txt 中指定的任何所需软件包
RUN pip install -r requirements.txt
# 定义环境变量
#ENV NAME World
# 在容器启动时运行 app.py
CMD ["python3", "./myapps/hello_world.py"]
#CMD ["python3","./myapps/hello_world.py","worker","-l","info"]     ##faust程序worker启动命令

(3)制作镜像
格式:

docker build -t imagename Dockerfilepath 
# imagename:镜像名称,自定义
# Dockerfilepath:Dockerfile 所在文件夹名称,当前名录为 “.” 
如:
docker build -t hello_world .

(4)运行镜像
格式:

docker run -it --name c_name imagename
-it:可交互
c_name:container名称,自定义
如:
docker run -it --name hello5 hello_world
docker run -p  192.168.31.35::9092 -it --name hello7 hello_world    #映射到宿主机192.168.31.35的9092端口,即使用宿主机的kafka

3、docker常用命令

docker container ls -a #查看container信息
docker exec -it containerID bash      #进入container
docker run -p 4000:80 imageName  #将机器的 4000 端口映射到容器的 80 端口
docker run -d -p 4000:80  imageName       # 内容相同,但在分离模式下
docker ps                                 # 查看所有正在运行的容器的列表
docker stop containerID                     # 平稳地停止指定的容器
docker ps -a           # 查看所有容器的列表,甚至包含未运行的容器
docker kill containerID                   # 强制关闭指定的容器
docker rm containerID              # 从此机器中删除指定的容器
docker rm $(docker ps -a -q)           # 从此机器中删除所有容器
docker images -a                               # 显示此机器上的所有镜像
docker rmi imagename            # 从此机器中删除指定的镜像
docker rmi $(docker images -q)             # 从此机器中删除所有镜像
docker login             # 使用您的 Docker 凭证登录此 CLI 会话
docker tag <image> username/repository:tag  # 标记 <image> 以上传到镜像库
docker push username/repository:tag            # 将已标记的镜像上传到镜像库
docker run username/repository:tag                   # 运行镜像库中的镜像

参考文档:
https://docs.docker-cn.com #docker中文文档

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值