编辑identidock.py 如下:
from flask import Flask
app = Flask(__name__)
default_name = 'Joe Bloggs'
@app.route('/')
def mainpage():
name = default_name
header = '<html><head><title>Identidock</title></head><body>'
body = '''<form method="POST">
Hello <input type="text" name="name" value="{}">
<input type="submit" value="submit">
</form>
<p>You look like a:
<img src="/monster/monster.png"/>
'''.format(name)
footer = '</body></html>

运行

访问

引入现有镜像dnmonster
编辑identidock导入Response、requests,请求 dnmonster 服务return一个 PNG 图像:

修改Dockerfile添加Requests库:

构建docker build -t identidock .

构建成功

运行dnmonster容器
docker run -d --name dnmonster amouat/dnmonster:1.0

启动identidock容器使用--link dnmonster:dnmonster把两个容器相连
docker run -d -p 5000:5000 -e "ENV=DEV" --link dnmonster:dnmonster identidock
在次访问:http://192.168.20.69:5000/

跟新docker-compose.yml文件

1、links:
- dnmonster(identidock连接dnmonster 容器)
2、dnmonster:
image: amouat/dnmonster:1.0(dnmonster 容器是用amouat/dnmonster:1.0 镜像定义的 )
移除之前启动过的任何容器:
docker rm $(docker stop $(docker ps -q))
使用Compose 来重建:

运行应用程序:
docker-compose up -d(无需重启容器即可更新代码)
修改vim identidock.py如下:
from flask import Flask, Response, request
import requests
import hashlib
app = Flask(__name__)
salt = "UNIQUE_SALT"
default_name = 'Joe Bloggs'
@app.route('/', methods=['GET', 'POST'])
def mainpage():
name = default_name
if request.method == 'POST':
name = request.form['name']
salted_name = salt + name
name_hash = hashlib.sha256(salted_name.encode()).hexdigest()
header = '<html><head><title>Identidock</title></head><body>'
body = '''<form method="POST">
Hello <input type="text" name="name" value="{}">
<input type="submit" value="submit">
</form>
<p>You look like a:
<img src="/monster/{}"/>
'''.format(name, name_hash)
footer = '</body></html>

1、导入hashlib对用户输入进行散列处理的程序库
2、salt = "UNIQUE_SALT"定义散列函数的 salt 值
3、@app.route('/', methods=['GET', 'POST'])定义Flask响应GET、POST的请求
4、if request.method == 'POST':
name = request.form['name'](如果request.method是POST把用户输入的值赋给name)
5、name_hash = hashlib.sha256(salted_name.encode()).hexdigest()(对输入执行 SHA256 算法,以获取散列值
)
访问http://192.168.20.69:5000/输入不同的英文名查看不同的效果

本文介绍了如何使用Docker创建一个名为Identidock的Flask Web应用,该应用允许用户输入名字并显示PNG图像。通过编辑Python代码实现POST请求处理用户输入,使用hashlib进行SHA256散列,并通过Dockerfile构建镜像。同时,通过docker-compose.yml文件链接dnmonster容器,实现应用间的通信。
1141

被折叠的 条评论
为什么被折叠?



