使用Flask+Redis構建一個實現計數器功能的web項目python
docker run -d --name redis redis
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