项目结构


平时在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的完整过程相关推荐

  1. 小奎因的 PYTHON 项目部署与调度直播分享来了

    " 阅读本文大概需要 10 分钟. " "凉风有性 秋月无边--" 编不下去了. 自从上次发布开源库 aiowebsocket 之后,小奎因已经很久没有在公众号 ...

  2. 如何将Python项目部署到新电脑上运行?

    如何将Python项目部署到新电脑上运行? 在工作中,可能需要在新服务器上部署项目代码,例如新增服务器.把测试环境的代码部署到生产环境等. 在生活中,也会遇到换新电脑,需要将自己在旧电脑上写的(项目) ...

  3. 华为云·云享专家公开课:45分钟掌握Python项目部署与调度核心逻辑直播

    爬虫项目在编写完成后往往需要部署到服务器上,会经历哪些阶段?如何运行Python 的 EGG 包?华为云专家在线公开课将于 5.22日19:00为你揭秘,45分钟让你轻松掌握Python项目部署与调度 ...

  4. 微服务项目部署在docker容器运行

    昨天的一篇微服务项目中涉及到docker部署,今天写一篇关于微服务项目部署在docker容器中运行,使用github上另外一个比较经典的微服务项目piggyMetric,项目的github地址:htt ...

  5. go项目部署:docker部署go项目直接运行二进制文件部署(两种方式进行部署)

    go项目部署:docker部署go项目&直接运行二进制文件部署 引言:之前断断续续的接触到项目部署,一直没有详细的了解部署,于是最近就好好的专研一下项目的部署,前期准备:一个自己或者别人的具有 ...

  6. 【.Net Core】把dotnet core 项目部署到docker

    把dotnet core 项目部署到docker Docker Dockerfile 部署到Centos8 发布 运行容器: 容器内运行命令 Docker Dockerfile # 引入镜像,低版本 ...

  7. python 怎么部署_如何把Python项目部署到服务器上

    如何把Python项目部署到服务器上 一,不需要域名的情况下 1,访问阿里云官网 2,注册登录(建议支付宝授权) 3,登陆后--->产品-->云服务器ECS 4,滚动条拉倒页面底部--&g ...

  8. Spring Boot项目部署到Docker的流程及一些容易踩的坑

    Spring Boot项目部署到Docker的流程及一些容易踩的坑 前期准备 准备Spring Boot项目 编写简单的控制类,方便测试 编写日志打印相关 测试项目是否能正常工作 准备部署到docke ...

  9. python项目部署到docker_使用docker 部署python 项目

    使用python 开发了一个restfu api程序,使用docker镜像部署.主要有如下步骤,简单记录以供以后参考. 1. 创建DockerFile文件 创建一个DockerFile文件,文件名为D ...

  10. 初学者Django框架的基本使用,以及项目部署(Docker部署)

    Django框架 Django是Python Web应用框架, 基于Python的WSGI(Web Service Gateway Interface)Web服务网关接口, Django从3.0开始运 ...

最新文章

  1. 在CentOS 6.6 64bit上升级GCC到4.8.2版本
  2. NanoPi NEO Air使用十:自己编写驱动来控制LED
  3. Mastercam2021中文版
  4. python爬去学校_python爬取学校教务系统
  5. 使用坚果云同步SVN服务器数据
  6. 如何判断数组所有数都不等于一个数_【每日算法Day 91】求解数组中出现次数超过1/3的那个数
  7. 九章算法班L5 Linked List
  8. no ip domain-lookup 什么意思
  9. 少儿编程150讲轻松学Scratch(十二)-用Scratch制作石头剪子布游戏
  10. 20172313 2018-2019-1 《程序设计与数据结构》第六周学习总结
  11. 数组作为方法的返回值
  12. 给妹子讲python-S01E01好用的列表
  13. win10下添加ssh服务
  14. Apache Flink 在国有大型银行智能运营场景下的应用
  15. python 基础 7.1 datetime 获得时间
  16. c语言第二版第三章答案,C语言程序设计(第2版) 刘克威,张凌晓著 习题答案-第三章...
  17. 通过JSP页面访问Servlet
  18. iPhone 邮件html设置,iphone手机邮件设置教程
  19. 【Camera相机开发】实现相机预览
  20. 论做空工具体验对比,股票下跌可选择 期权?涡轮?CFD差价合约?牛熊交易获利

热门文章

  1. 数据库还原的多种方式
  2. Dapper学习 - Dapper.Rainbow(三) - Read
  3. 【原】Storm调度器
  4. 软件nginx 0.8.16
  5. Intel 1Gb/10Gb网卡在多核处理器中使用的加速技术
  6. 浅谈Tomcat接收到一个请求后在其内部的执行流程(源码)
  7. Spring依赖注入流程【完整版】(populateBean方法内部执行流程)
  8. mac 更换默认蓝牙适配器_解决Switch最大遗憾,谷粒ROUTE Air蓝牙适配器:简单好用...
  9. 关于AndroidStudio结合百度地图Api开发的SHA1获取
  10. linux/windows查询文件特定内容并写入目标文件