免费ppt模板大全免费下载网站,建立网站的注意事项,网站seo快速,深圳平面广告设计公司前言
本机开发环境众多#xff0c;python版本都好多个#xff0c;虽然可以通过conda管理多个虚拟环境#xff0c;但还是不能像容器那样进行进程间的隔离。于是打算试下docker下运行python#xff0c;而且生产环境很多时候也是用容器来跑应用#xff0c;环境统一、方便扩容…前言
本机开发环境众多python版本都好多个虽然可以通过conda管理多个虚拟环境但还是不能像容器那样进行进程间的隔离。于是打算试下docker下运行python而且生产环境很多时候也是用容器来跑应用环境统一、方便扩容。
云服务器选择
搞个低配版云服务器做点开发测试啥的非常方便主要是云服务器支持外网访问。
但是这里还涉及到一个操作系统的选择windows系统可以傻瓜式操作但是安装完系统十几个G的磁盘空间就没了windows系统确实太大了那还是云服务器厂商给系统瘦身了自己电脑安装下来都大几十G根本hold不住。当然因为windows自带操作界面系统大也是必然。
Linux系统在这方面就很有优势了不过就是需要命令行操作。我直接选了带docker的镜像磁盘才占用了3-5个G。而且Linux系统本身对CPU、内存的消耗也更少这样可以把更多的性能留给应用程序。
于是我选择了Linux。接下来就是在Linux的世界里探索一番了
实操过程
环境说明
目前我已经有ubuntudocker的镜像这个是在初始化云服务器的时候就可以选择对应的镜像当然初始只有ubuntu系统手动安装docker也还好
大体思路
1、先拉取一个python基础镜像
2、然后通过dockerfile构建镜像安装相关包同时设置工作目录到宿主机方便运行程序而且容器重启了文件也不会丢
3、运行py文件
docker镜像构建
1、首先拉取一个python3.10的基础镜像3.10兼容性比较好不高不低刚刚好
docker pull python:3.10
2、编写或生成requirements.txt
在需要部署到docker容器的python程序目录cmd执行自动生成requirements.txt
pip freeze requirements.txt
不过这样生成出来好多都是python已经安装的包so也可以自己手动维护requirements.txt
3、编写dockerfile
Linux远程后默认路径是home/ubuntu注ubuntu即登录用户
在home/ubuntu下新建app目录后续dockerfile、requirements.txt就都放这里
dockerfile内容如下
FROM python:3.10
WORKDIR /app
ADD requirements.txt /app
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
CMD [python,start.py]
dockerfile内容解释
From python:3.10python:3.10就是我上面pull的镜像名
WORKDIR /app设置容器的工作目录注这里/app为容器目录
ADD requirements.txt /app把requirements.txt添加到/app下后面pip install要用到
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple运行pip install安装需要的包-i后面的地址是使用清华大学的pip源来安装这样下载速度会很快
CMD [python,start.py]相当于运行python start.py注意CMD和方括号之间要有空格
4、相关文件准备
如上CMD命令可以看到有个start.py这个就是我要测试运行的py程序里边是运行一个flask程序显示hello world。所以我需要把start.py放到Linux下某个路径docker run的时候将容器的/app目录映射到Linux下路径即可
5、build构建新的python镜像
docker build -t python3.10:01 .
6、运行测试镜像
docker run -id --namepython3.10-test01 python3.10:01 /bin/sh
7、进入测试容器执行命令
docker exec -it -u 0 python3.10-test01 /bin/sh
接下来就可以直接在容器内执行命令比如pip list看看是不是已经pip install成功了或者手动python xx.py去测试
正式运行docker容器
如上容器测试没问题那么这个镜像应该就问题不大了
docker run -id -v /home/ubuntu/app/py_test_01:/app -p 1080:5000 --namepython3.10-test02 python3.10:01
这里-v参数指定了容器目录/app到Linux目录的映射这样在上面CMD 命令执行python start.py就可以在/home/ubuntu/app/py_test_01下找到start.py文件了因此上面也是要把start.py文件放这个目录
-p参数指定了Linux宿主机、容器的端口映射在这里Linux宿主机通过1080即可访问docker容器部署的python web程序
docker logs python3.10-test02
通过docker logs 容器id或name即可查看日志信息看看有没报错啥的
没啥问题的话就可以成功访问到hello world
一点补充
其实第一个容器没啥用可以删除掉主要用来做测试了实际用的是第二个容器容器要起作用就得开放端口
再一个云服务器资源宝贵平时看不需要的镜像就可以删除
遇到的问题
1、无法pull镜像
需要将当前用户添加到docker用户组然后重启docker重新远程
2、如何方便拷贝文件
我使用了WinSCP可以图形化界面操作有点类似ftp的操作非常方便