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

  • Post author:
  • Post category:其他


一、实验环境

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

转载于:https://www.cnblogs.com/SH170706/p/10394281.html