Python项目部署到Docker的完整过程
项目结构
平时在PyCharm里面运行该工程,只要直接运行server.py文件即可
现在希望将该工程,部署到docker里面,使用容器启动:
步骤如下:
1、创建一个上传到Linux系统文件夹(文件名任意)
docker_EF_NFCS是要上传到Linux系统,生成Docker镜像的文件夹
docker_EF_NFCS文件夹下面有两个东西
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了 Dockerfile,就可以创建我们所需要的镜像
Dockerfile文件内容如下:
#基于的基础镜像
FROM python:3.7
#代码添加到code文件夹
ADD ./EF_NFCS /code
#设置code文件夹是工作目录
WORKDIR /code
#安装支持
RUN pip install -r requirements.txt
CMD [“python”, “/code/package/server.py”]
最后一条命令,就是说,当启动容器时候,执行server.py程序。
一个EF_NFCS(任意起的名字)文件夹:包含工程的代码,和运行工程所需要的环境列表
所以,EF_NFCS文件夹,有两个成员package和requirements.txt
package就是Python项目的package(整个源码所在目录)直接复制过来的
requirements.txt生成方法:
cmd命令,进入到【D:\python\EF_NFCS】目录,也就是工程目录,package的同级目录,
执行命令:pip freeze > requirements.txt
就在该目录下生成了一个requirements.txt文件:
如下图,可能很大,因为没有配合virtualenv ,就把整个环境中的包都列出来,
没关系,我们可以删除我们此工程中,不需要的组件
2、上传到linux环境,生成镜像
进入docker_EF_NFCS文件夹
创建镜像
执行命令:docker build -t ef_nfcs_img .
ef_nfcs_img 为创建的镜像名称,. 表示当前目录(docker_EF_NFCS)
查看镜像是否创建成功:
执行命令:docker images
可以看到ef_nfcs_img的镜像,已经存在了
3、运行镜像,生成并启动容器
执行命令:docker run -it -p 9060:9060 --name ef_nfcs ef_nfcs_img
-it:表示交互式终端的容器,非启动后立刻结束的容器
-p 9060:9060:表示将docker的9060端口,映射到Linux虚拟机的9060端口
也就是说,访问Linux虚拟机的9060端口,就是在访问docker容器的9060端口
–name ef_nfcs:给容器取个名字,嫌麻烦可以省去
ef_nfcs_img:容器是用哪个镜像启动的(一个容器,必须依赖一个镜像启动)
和原来用PyCharm启动的效果一致:
这就OK啦!!!
拓展-实用命令
退出容器又不关闭容器:Ctrl + P + Q
比如这种情况:
直接输入exit 会退出且关闭容器,工程就stop了
或者Ctrl + C,会报错KeyboardInterrupt,工程就也stop了
此时,就需要使用命令:docker start 容器ID,去再启动容器后,就可以继续访问工程了,
使用命令:
docker exec -it 容器ID /bin/bash
或者
docker attach 容器ID,重新进入容器后,可查看程序打印的日志
但是,如果使用Ctrl + P + Q退出容器,就不会中断工程,等于退出容器后,还可访问容器的工程,
再进入,也是使用命令:docker attach 容器ID
ctrl+d 退出容器且关闭, docker ps 查看无
ctrl+p+q 退出容器但不关闭
查看安装的docker:yum list installed | grep docker
查看容器:docker ps -a
查看镜像:docker images
删除容器:docker rm 容器ID
删除镜像:docker rmi 镜像ID/镜像名
安装rz上传,sz下载的命令:yum -y install lrzsz
docker inspect 容器ID:返回一个Json文件记录Docker容器的配置和状态信息
将容器导出到容器的镜像文件 : docker export 容器ID > update.tar
用容器的镜像文件创建一个新静像:docker import - 镜像名 < update.tar
创建完成之后,生成并启动镜像的容器:docker run -it 镜像名
不行就在后面加一个/bin/bash ,然后进入code的package目录,手动启动程序:python server.py
比如报错:Error response from daemon: No command specified
镜像保存为镜像文件: docker save -o update1.tar update(update是一个已经存在的镜像)
从镜像文件加载生成新镜像:docker load < update1.tar
有时候,从镜像文件加载生成新镜像,会报错如下:
open /var/lib/docker/tmp/docker-import-559669842/bin/json: no such file or directory
从以命令可以解决:
cat jdkself.tar | docker import - jdkself
jdkself.tar为镜像文件名称,jdkself为镜像名称
结束!!!
Python项目部署到Docker的完整过程相关推荐
- 小奎因的 PYTHON 项目部署与调度直播分享来了
" 阅读本文大概需要 10 分钟. " "凉风有性 秋月无边--" 编不下去了. 自从上次发布开源库 aiowebsocket 之后,小奎因已经很久没有在公众号 ...
- 如何将Python项目部署到新电脑上运行?
如何将Python项目部署到新电脑上运行? 在工作中,可能需要在新服务器上部署项目代码,例如新增服务器.把测试环境的代码部署到生产环境等. 在生活中,也会遇到换新电脑,需要将自己在旧电脑上写的(项目) ...
- 华为云·云享专家公开课:45分钟掌握Python项目部署与调度核心逻辑直播
爬虫项目在编写完成后往往需要部署到服务器上,会经历哪些阶段?如何运行Python 的 EGG 包?华为云专家在线公开课将于 5.22日19:00为你揭秘,45分钟让你轻松掌握Python项目部署与调度 ...
- 微服务项目部署在docker容器运行
昨天的一篇微服务项目中涉及到docker部署,今天写一篇关于微服务项目部署在docker容器中运行,使用github上另外一个比较经典的微服务项目piggyMetric,项目的github地址:htt ...
- go项目部署:docker部署go项目直接运行二进制文件部署(两种方式进行部署)
go项目部署:docker部署go项目&直接运行二进制文件部署 引言:之前断断续续的接触到项目部署,一直没有详细的了解部署,于是最近就好好的专研一下项目的部署,前期准备:一个自己或者别人的具有 ...
- 【.Net Core】把dotnet core 项目部署到docker
把dotnet core 项目部署到docker Docker Dockerfile 部署到Centos8 发布 运行容器: 容器内运行命令 Docker Dockerfile # 引入镜像,低版本 ...
- python 怎么部署_如何把Python项目部署到服务器上
如何把Python项目部署到服务器上 一,不需要域名的情况下 1,访问阿里云官网 2,注册登录(建议支付宝授权) 3,登陆后--->产品-->云服务器ECS 4,滚动条拉倒页面底部--&g ...
- Spring Boot项目部署到Docker的流程及一些容易踩的坑
Spring Boot项目部署到Docker的流程及一些容易踩的坑 前期准备 准备Spring Boot项目 编写简单的控制类,方便测试 编写日志打印相关 测试项目是否能正常工作 准备部署到docke ...
- python项目部署到docker_使用docker 部署python 项目
使用python 开发了一个restfu api程序,使用docker镜像部署.主要有如下步骤,简单记录以供以后参考. 1. 创建DockerFile文件 创建一个DockerFile文件,文件名为D ...
- 初学者Django框架的基本使用,以及项目部署(Docker部署)
Django框架 Django是Python Web应用框架, 基于Python的WSGI(Web Service Gateway Interface)Web服务网关接口, Django从3.0开始运 ...
最新文章
- 在CentOS 6.6 64bit上升级GCC到4.8.2版本
- NanoPi NEO Air使用十:自己编写驱动来控制LED
- Mastercam2021中文版
- python爬去学校_python爬取学校教务系统
- 使用坚果云同步SVN服务器数据
- 如何判断数组所有数都不等于一个数_【每日算法Day 91】求解数组中出现次数超过1/3的那个数
- 九章算法班L5 Linked List
- no ip domain-lookup 什么意思
- 少儿编程150讲轻松学Scratch(十二)-用Scratch制作石头剪子布游戏
- 20172313 2018-2019-1 《程序设计与数据结构》第六周学习总结
- 数组作为方法的返回值
- 给妹子讲python-S01E01好用的列表
- win10下添加ssh服务
- Apache Flink 在国有大型银行智能运营场景下的应用
- python 基础 7.1 datetime 获得时间
- c语言第二版第三章答案,C语言程序设计(第2版) 刘克威,张凌晓著 习题答案-第三章...
- 通过JSP页面访问Servlet
- iPhone 邮件html设置,iphone手机邮件设置教程
- 【Camera相机开发】实现相机预览
- 论做空工具体验对比,股票下跌可选择 期权?涡轮?CFD差价合约?牛熊交易获利
热门文章
- 数据库还原的多种方式
- Dapper学习 - Dapper.Rainbow(三) - Read
- 【原】Storm调度器
- 软件nginx 0.8.16
- Intel 1Gb/10Gb网卡在多核处理器中使用的加速技术
- 浅谈Tomcat接收到一个请求后在其内部的执行流程(源码)
- Spring依赖注入流程【完整版】(populateBean方法内部执行流程)
- mac 更换默认蓝牙适配器_解决Switch最大遗憾,谷粒ROUTE Air蓝牙适配器:简单好用...
- 关于AndroidStudio结合百度地图Api开发的SHA1获取
- linux/windows查询文件特定内容并写入目标文件