持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情
这里我们写一个python程序,然后写Dockerfile,打包image并生成container
1. python程序编写
这里我们使用Flask(python的web应用)的一个Demo,允许这个需要有python的环境,同时还需要安装Flask这个第三方的库:
然后运行:
2. Dockerfile编写
2.1 base image
首先我们要明白,我们这个image是想执行一个python程序,所以写Dockerfile第一步的FROM就需要一个基于python2.7的base image,这样省去了自己安装python的步骤:
这里我们怎么知道有这个image呢?可以去docker-hub上面搜索一下公共image。
2.2 LABEL编写
这里写一些介绍:
2.3 执行命令
这里我们需要在image里面安装flask库。
2.4 app.py编写与添加
这里直接拷贝过来就可以了,但是记得拷贝过来之后还需要添加到image,通过这个命令来进行:
注意这里还需要设置工作目录,以防止后面CMD找不到执行的地方:
2.5 程序运行的IP问题--EXPOSE方法
这里我们知道这个默认其实是本地IP,外部无法访问的。
这里我们需要借助一个语法来暴露一个端口:
3. image生成
这里有一个问题,/app不是一个目录。
4. 调试
这里我们关注一下这种错误如何Debug调试呢?这里我们之前说过,每一个Step都会创建一个临时的container:
我们可以通过这个ID来进入container里面,看一下这个目录到底是什么,通过交互式方式来run container:
然后就进入container里面了:
这里发现app他的确不是一个目录,而是一个app.py文件,这里是因为:
这个命令是把app.py 拷贝到/ 下重名为app了,最后在build一下,成功了:
5. 创建container
这里直接run,我们发现flask的log打印出来了,但是这里有没有办法让他去后台执行呢?不然我们一直卡在这个服务里面了,加上一个-d就可以了:
6. 上述流程总结
环境---代码---CMD运行!