4.7 多容器複雜應用的部署演示

使用Flask+Redis構建一個實現計數器功能的web項目python

建立一個redis容器

docker run -d --name redis redis

建立一個Flask容器

Dockerfile文件內容以下web

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文件內容以下redis

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

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

此時在虛擬機上執行shell

curl http://127.0.0.1:5000

在宿主機上執行數據庫

curl http://192.168.205.10:5000/

均可看到以下效果了flask

hostname is 066ed3b5ae8e and hits b'32' times
相關文章
相關標籤/搜索