Docker学习笔记_使用Dockerfile创建flask的一个镜像

一、实验环境

      1、宿主机OS:Win10 64位

      2 、虚拟机OS:Ubuntu18.04 64位    虚拟机名称:Ubuntu18VM1   虚拟机IP:192.168.8.25

      3、账号:docker    

二、简要步骤

  1.编写一个dockerfile文件
  2.编写外部文件requirements.txt
  3.编写一个app.py文件
  4.创建镜像
  5.查看镜像
  6.创建并运行容器
  7.从浏览器里查看

三、详细步骤

       1、建立一个docker的工作文件夹dokerspace,进入这个文件夹,编写dockerfile
           $vi Dockerfile

          

           文件Dockerfile内容:

           FROM python:3.5
           WORKDIR /app
      ADD . /app
           RUN pip install -r requirements.txt
           EXPOSE 80
           ENV NAME World
           CMD ["python","app.py"]
          

  2、编写外部文件requirements.txt

            Flask

            Redis

       3、编写app.py,3、这里app.py是一个简单的Python应用文件内容:

from flask import Flask
from redis import Redis,RedisError
import os
import socket

redis = Redis(host="redis",db=0,socket_connect_timeout=2,socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis,counter disababled</i>"
    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b>{hostname}<br>" \
           "<b>Visits:</b>{visits}"

    return html.format(name=os.getenv("NAME","world"),hostname=socket.gethostname(),visits=visits)

if __name__=="__main__":
    app.run(host='0.0.0.0',port=80)

       4、创建镜像

       $docker build -t hellodocker . 
       其中,docker build是构建镜像的指令;-t参数指定了生成的镜像的名称为hellodocker;最后的点,表明是当前目录。如果Dockerfile不在此目录,则需要将点替换为

Dockerfile所在的目录。

       5、查看镜像

       $sudo docker ps

       6、创建并启动容器

       $sudo docker run -d -p 5000:80 hellodocker

       

       7、从宿主机浏览器里查看

      

        
         至此,一个简单的基于flask镜像创建的容器已经运行。


四、遇到问题及处理

     1、遇到问题:在试验中,能创建镜像,但无法创建并启动容器。

          经检查,是app.py文件里存在bug。把此文件放到一个Python的环境里,排查问题,直到能正常解释执行。修正本实验中的app.py后,后续步骤正常进行。

猜你喜欢

转载自www.cnblogs.com/SH170706/p/10394281.html