使用 Docker 打包 Python 项目

1. 获取 Python 的镜像文件
项目的封装可以建立在已有镜像的基础上,在 Ubuntu 中可通过
docker pull python:3.6.8-slim-stretch # 这里选取了3.6版本
获取 Python 镜像

2. 配置 Dockerfile 文件
在 Python 项目的根目录新建 Dockerfile 文件,在 Dockerfile 文件中写入下面内容:

FROM python:3.6.8-slim-stretch

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install –no-cache-dir -r requirements.txt

COPY . .
ENTRYPOINT [“python”]
CMD [“./run.py”]

3. 创建镜像
创建镜像的命令为:
docker build -t python-project:1.0 .
需要注意的是*后面的 “.” 不能省略

4. 运行镜像
运行镜像的命令为:

docker run –rm -p 5000:5000 –name pyproject python-project:1.0
1
这行命令中的几个参数的含义分别如下

–rm:表示关闭命令行窗口时,运行该镜像的进程会同时关闭;
-p:用来设置端口映射,即把电脑主机的端口映射到 docker 容器中的端口,如何封装的是一个 web 服务,那么必须要设定端口映射;
–name:用来为运行的镜像设置别名,方便后面的调用
此外,可能会经常用到的参数还有:

-e:为镜像添加环境变量
-d:使 web 在后台持续运行
5. 常用命令总结
docker build -t pflask:1.0 . 创建镜像

docker images | grep python 查看镜像

docker run –rm -p 5000:5000 pflask:1.0 运行镜像

docker run –rm -p 5000:5000 -e env1=evn1 pflask:1.0 加入环境变量

docker run -d pflask:1.0 运行docker并守护进程

docker ps -a 查看当前正在运行的所有镜像

docker stop IMAGE_ID 根据 IMAGE_ID 停止镜像进程

docker rm -f IMAGE_ID 根据 IMAGE_ID 删除镜像进程

docker rmi IMAGE_ID 根据 IMAGE_ID 删除镜像

docker logs -f tname 根据助记符查看日志

ss -anp | grep 5000 从所有端口中过滤出 5000

curl -v “http://192.168.195.100:5000” 测试连接

cat hello.py 查看文件

a256sum hello.py 散列算法

Dockerfile内容
FROM python:3.6.8-slim-stretch
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install –no-cache-dir -r requirements.txt
COPY . .
ENTRYPOINT [“python”]
CMD [“/run.py”]