Docker容器技术:Dockerfile实战1

109 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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运行!