STC214/使用docker打包python程序

Created 2 Feb 2021 Modified 2 Feb 2021

准备工作

  1. 一个可以正常执行的py文件
  2. docker环境
  3. python环境

进入项目文件夹

  1. 运行一次py文件对程序进行打包前的测试

  2. 在项目主目录下编写Dockerfile文件
    内容模板如下:

需要注意的是这个文件的写法并非如此固定,根据需要可以自行编辑

  
# Use an official Python runtime as a parent image  
FROM python:3.7.6  
  
# Set the working directory to /app  
WORKDIR /app  
  
# Copy the current directory contents into the container at /app  
COPY . /app  
  
# Install any needed packages specified in requirements.txt  
# 此部分使用了清华源加快了速度  
# 清华源使用只需要将域名改成 pypi.tuna.tsinghua.edu.cn/simple 即可  
# 如果是手动敲命令  
RUN pip install --trusted-host pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt  
  
# Make port 80 available to the world outside this container  
EXPOSE 80  
  
# Define environment variable  
ENV NAME daily189  
  
# Run app.py when the container launches  
CMD ["python", "Run_all.py"]  
  
  
  1. 对项目使用的库进行备份
  
pip freeze > requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple  
  
  1. 对requirements.txt文件中非必要的库进行删减(如格式标准相关的库)

制作镜像

1.在项目根目录运行:

  
docker build -t imagename Dockerfilepath   
  
# Dockerfilepath:Dockerfile 所在文件夹名称,当前名录为 “.”   
  
如:  
docker build -t ccpy .  
  

对镜像进行运行测试

  
# 仅仅是本地运行的程序无需联网任务简单如此运行即可  
docker run -d --name c_name imagename  
  
# 如果需要联网则需要用 -p 指令将容器中的端口映射出来  
docker run -it -p 80:80 --name c_name imagename  
  

如果没问题则可以继续下一步
否则可以通过修改程序源文件代码修正后重新打包

拷贝运行正常的容器镜像文件

命令格式为: docker save ID > xxx.tar
docker load < xxx.tar
ID可以为自己指定的名字 也可以是docker自动分配的编码

保存容器

docker export ID >xxx.tar
docker import xxx.tar containr:v1
然后再docker run -it containr:v1 bash

最后在自己部署了docker环境的服务器上运行即可

将制作好的容器文件 ***.tar 拷贝到运行机上

docker load < ***.tar

之后运行即可

Gitalking ...