Docker(七)创建web应用

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

编辑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/输入不同的英文名查看不同的效果


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值