关于docker:47-多容器复杂应用的部署演示

1次阅读

共计 1010 个字符,预计需要花费 3 分钟才能阅读完成。

应用 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
正文完
 0