使用Flask+Redis构建一个实现计数器功能的web项目

创建一个redis容器

docker run -d --name redis redis

创建一个Flask容器

Dockerfile文件内容如下

FROM hub.c.163.com/library/python
LABEL maintainer="924714558@qq.com"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 5000
CMD ["python","app.py"]

Dockerfile所在的当前目录下的app.py文件内容如下

import os
import socket
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)
@app.route('/')
def hello():
    redis.incr('hits')
    return 'hostname is %s and hits %s times' % (socket.gethostname(),redis.get('hits'))
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

然后对Dockerfile文件进行build并实例化一个容器

docker build -t siguoya/flask-redis .
# --link用于flask app连接redis数据库
# -e选项用于设置容器的环境变量,在容器内部可以使用env命令来获取
# REDIS_HOST的值是先前创建的redis容器的name
# 5000:5000 是指虚拟主机的5000端口映射flask app项目启动的5000端口
docker run -d --name flask-redis --link redis -e REDIS_HOST=redis -p 5000:5000 siguoya/flask-redis

此时在虚拟机上执行

curl http://127.0.0.1:5000

在宿主机上执行

curl http://192.168.205.10:5000/

都可看到如下效果了

hostname is 066ed3b5ae8e and hits b'32' times

思过崖
65 声望19 粉丝

从转行到入门,记录我的自学成长之路