⼀个Python项⽬(带前端),部署到Docker的完整过程前提:
docker已经安装好,docker的安装,请见另⼀篇博客:
序⾔:介绍⼀下需要运⾏的Python项⽬的结构:
平时在PyCharm⾥⾯运⾏该⼯程,只要直接运⾏server.py⽂件即可
现在希望将该⼯程,部署到docker⾥⾯,使⽤容器启动:
步骤如下:
1:创建⼀个上传到Linux系统⽂件夹(⽂件名任意)
docker_EF_NFCS是要上传到Linux系统,⽣成Docker镜像的⽂件夹
docker_EF_NFCS⽂件夹下⾯有两个东东,
⼀个Dockerfile⽂件(没有后缀名)
Dockerfile 是⼀个⽂本⽂件,其内包含了⼀条条的指令(Instruction),每⼀条指令构建⼀层,因此每⼀条指令的内容,就是描述该层应当如何构建。有了 Dockerfile,就可以创建我们所需要的镜像
Dockerfile⽂件内容如下:
#基于的基础镜像
FROM python:3.7
#代码添加到code⽂件夹
ADD ./EF_NFCS /code
# 设置code⽂件夹是⼯作⽬录
WORKDIR /code
# 安装⽀持
RUN pip install -
CMD ["python", "/code/package/server.py"]
--------------------------------------
最后⼀条命令,就是说,当启动容器时候,执⾏server.py程序。
⼀个EF_NFCS(任意起的名字)⽂件夹:包含⼯程的代码,和运⾏⼯程所需要的环境列表
所以,EF_NFCS⽂件夹,有两个成员package和
package就是Python项⽬的package(整个源码所在⽬录)直接复制过来的⽣成⽅法:
cmd命令,进⼊到【D:\python\EF_NFCS】⽬录,也就是⼯程⽬录,package的同级⽬录,
执⾏命令:pip freeze >
就在该⽬录下⽣成了⼀个⽂件:
如下图,可能很⼤,因为没有配合virtualenv ,就把整个环境中的包都列出来,
没关系,我们可以删除我们此⼯程中,不需要的组件
2:上传到linux环境,⽣成镜像
2.1:我们将docker_EF_NFCS⽂件夹,压缩成zip包,上传到Linux虚拟机系统中的某个路径下⾯
2.2:解压:
执⾏命令:unzip docker_EF_NFCS.zip
2.3:进⼊docker_EF_NFCS⽂件夹:
2.4:创建镜像:
执⾏命令: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启动的效果⼀致:
原来访问系统:
现在访问系统,只要将IP替换成虚拟机的IP:
这就OK啦
4:⼀些实⽤命令
退出容器⼜不关闭容器:Ctrl + P + Q
⽐如这种情况:
docker打包镜像
直接输⼊exit 会退出且关闭容器,⼯程就stop了
或者Ctrl + C,会报错KeyboardInterrupt,⼯程就也stop了
再访问就访问不了了:
此时,就需要使⽤命令:docker start 容器ID,去再启动容器后,就可以继续访问⼯程了,
使⽤命令:
docker exec -it 容器ID /bin/bash
或者
docker attach 容器ID,重新进⼊容器后,可查看程序打印的⽇志
但是,如果使⽤Ctrl + P + Q退出容器,就不会中断⼯程,等于退出容器后,还可访问容器的⼯程,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论