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中文文档

### 使用 Docker 打包 Python 运行环境 使用 Docker 打包 Python 运行环境的核心在于创建一个 Dockerfile 文件,该文件定义了如何构建镜像以及运行容器时的配置。以下是详细的说明和示例代码。 #### 1. 创建 Dockerfile Dockerfile 是 Docker 镜像构建的基础,它描述了如何从基础镜像开始构建一个新的镜像。以下是一个典型的 Dockerfile 示例: ```dockerfile # 使用官方的 Python 3.9 镜像作为基础镜像 FROM python:3.9-slim-buster # 设置工作目录 WORKDIR /app # 将当前项目文件复制到容器中的 /app 目录 COPY . /app # 安装项目的依赖项 RUN pip install --no-cache-dir -r requirements.txt # 暴露容器的端口(如果需要) EXPOSE 5000 # 启动应用程序 CMD [ "python", "app.py" ] ``` 上述 Dockerfile 的每一步都对应着 Docker 构建过程中的一个阶段[^1]。 #### 2. 准备项目文件 在构建镜像之前,确保项目根目录下有以下文件: - `requirements.txt`: 包含项目所需的所有 Python 库。 - `app.py`: 主程序入口文件(根据实际情况替换为你的主文件名)。 #### 3. 构建 Docker 镜像 在项目根目录下执行以下命令以构建 Docker 镜像: ```bash docker build -t my-python-app . ``` 此命令会读取当前目录下的 Dockerfile 并构建一个名为 `my-python-app` 的镜像[^2]。 #### 4. 运行容器 构建完成后,可以使用以下命令运行容器: ```bash docker run -d -p 5000:5000 my-python-app ``` 此命令将启动一个容器,并将主机的 5000 端口映射到容器的 5000 端口。 #### 注意事项 - 如果项目依赖于特定的操作系统库(如 PostgreSQL 或 MySQL),可能需要在 Dockerfile 中添加额外的安装步骤。 - 为了优化镜像大小,可以选择更轻量的基础镜像,例如 `python:3.9-slim`。 - 在生产环境中,建议避免直接使用 `CMD` 命令运行开发服务器,而是使用 Gunicorn 或 uWSGI 等生产级 WSGI 服务器。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值