3.8Dockerfile实践
dockerfile 实践
在本节中,我们将一个python web程序制作为一个镜像并部署。当访问该python web程序时,将返回"hello world"
前提条件
主机上安装有Python和flask,若未安装,可通过如下命令安装
$ yum install python
$ yum -y install epel-release
$ yum -y install python-pip
$ pip install flask
步骤
1.新建工作空间flask-hello-world
并切换
mkdir flask-hello-world
cd flask-hello-world/
2.新建app.py文件,文件内容如下:
vi app.py
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return "hello docker\n"
if __name__ == '__main__':
app.run()
提示:想要验证app.py能否正常工作可以使用
python app.py
3.新建Dockerfile文件,文件内容如下
vi Dockerfile
FROM python:2.7
LABEL maintainer="moluo<moluo@163.com>"
RUN pip install flask
COPY app.py /app/
WORKDIR /app
EXPOSE 5000
CMD ["python","app.py"]
注意:请不要把
COPY app.py /app/
误写成COPY app.py /app
,在该案例中,COPY app.py /app
的作用是将app.py重命名为app,而不是拷贝文件
4.编译镜像
docker build -t moluo/flask-hello-world .
提示:docker在编译镜像过程中,会生成一些临时镜像。若编译中出错可以运行这些临时镜像来进行排错。为了演示排错。我们认为将Dockerfile中的
COPY app.py /app/
变为COPY app.py /app
,这样镜像编译过程中将产生如下错误:[root@master flask-hello-world]# docker build -t moluo/flask-hello-world . Sending build context to Docker daemon 4.096kB Step 1/7 : FROM python:2.7 ---> 55b47eef9c39 Step 2/7 : LABEL maintainer="moluo<moluo@163.com>" ---> Using cache ---> 8a73e1a8525f Step 3/7 : RUN pip install flask ---> Using cache ---> f3b1e6583f24 Step 4/7 : COPY app.py /app ---> 122167530f7c Step 5/7 : WORKDIR /app Cannot mkdir: /app is not a directory
编译过程第5步出错了,我们进入第4步编译生成的临时镜像122167530f7c进行排错,命令如下
[root@master flask-hello-world]# docker run -it 122167530f7c /bin/bash root@2a1b23080633:/# ls app bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@2a1b23080633:/# cd app bash: cd: app: Not a directory
5.运行镜像
docker run -d moluo/flask-hello-world
Last updated
Was this helpful?