本文主要是介绍python 的env 项目创建docker 镜像 demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
python 的env 项目创建docker 镜像 demo
文章目录
- 1. 准备虚拟python 虚拟环境和demo 项目
- 2. 准备docker 镜像环境前提
- 3. 生成镜像&&测试
- 关键点:
1. 准备虚拟python 虚拟环境和demo 项目
-
安装python env 环境
python3 -m venv flask_env3
-
启动虚拟环境
cd flask_env3 && source bin/active
-
编写demo脚本
#encoding:utf8 import os from flask import Flask, request, jsonify import sys import requests app = Flask(__name__) @app.route("/index", methods=["GET"]) def index():return "hello\r\n" if __name__ == "__main__":app.run(debug=True, host="0.0.0.0", port="8101")
-
依赖两个模块,安转部署
pip install requests pip install flask pip freeze > require.txt
2. 准备docker 镜像环境前提
- 删除bin 底下的python 软链,复制python解释器到对应位置
删除python3 的原因是因为这个软链在docker容器中没法使用,具体原因未知
错误提示为:
如果python 使用软链的话:启动容器的报错为: - 修改pip 的路径为docker 内的路径:
注意 以上如果不修改会出现以下的错误:#!/app/bin/python3 #此为部署docker 容器后python3 的绝对路径,和Dockerfile 文件中的WORKDIR 相关 # -*- coding: utf-8 -*- import re import sysfrom pip import mainif __name__ == '__main__':sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])sys.exit(main())
- 编写Dockerfile
FROM centos WORKDIR /app ADD . /app ENV PYTHONPATH /app/bin CMD /app/bin/python app.py
3. 生成镜像&&测试
- 编译命令:
编译镜像:docker build -t pythonenvdocker:v3 . 启动容器:run -d -p 8088:8101 pythonenvdocker:v3 查看状态:docker ps -a (确定是启动状态) 执行命令: [work@*** ~]$ curl http://localhost:8098/index hello You have mail in /var/spool/mail/work 进入容器:docker exec -it 23916ad83854 /bin/bash
关键点:
- virturl env 构建
- 删除env 环境中的解释器的软链,复制解释器到对应目录(
解释器软链到容器中不可用,原因未知
有知道的同学可以解释下) - 修改env 中pip 文件中指向为镜像部署后容器位置,否则pip 可能失败
- 在Dockerfile 中指定PYTHONPATH 好像无效(具体原因未知,有知道的同学可以解释下),所以Dockerfile 中的cmd 解释器物使用了绝对路径
这篇关于python 的env 项目创建docker 镜像 demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!