• 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后,后续步骤正常进行。

    幸福都是奋斗出来的,努力奋斗才能梦想成真。坚持自律,约束自我,克制弱点,坚持努力,遇见更好的自己。
  • 相关阅读:
    [django]Manipulator解惑
    [AJAX]Ajax.Net取Application的值问题
    IBatis.Net中为什么Output的paramMap的class设置为int就获取不到值
    [转]Python下载百度新歌100的代码
    [django]Django输出页面方式的补充
    Asp.Net的控件如何与Server交互
    [django]学习Model API的实例
    周杰伦的第七张专辑依然范特西
    立冬了,换个Skin
    InterDev调试asp页面和自定义activex all
  • 原文地址:https://www.cnblogs.com/SH170706/p/10394281.html
Copyright © 2020-2023  润新知