赞
踩
python操作redis简单Demo,创建两个Docker容器:
flask-redis中的程序代码app.py如下:
from flask import Flask from redis import Redis import os import socket 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 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname()) if __name__ == "__main__": app.run(host="0.0.0.0", port=5000, debug=True)
创建flask-redis容器的Dockerfile如下:
FROM python:2.7
LABEL maintaner="Peng Xiao xiaoquwl@gmail.com"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 5000
CMD [ "python", "app.py" ]
[root@eshop-cache05 flask-redis]# docker run -d --name redis redis
35bb18f15b00c65df7996368c28da64ec1f5021d5ea1b732d6754c3ff9a653bd
[root@eshop-cache05 flask-redis]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
35bb18f15b00 redis "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 6379/tcp
根据Dockerfile创建flask-redis镜像:
// 创建flask-redis目录 [root@eshop-cache05 opt]# mkdir flask-redis // 进入flask-redis目录 [root@eshop-cache05 opt]# cd flask-redis/ //将app.py 和 Dockerfile拷贝至该目录 [root@eshop-cache05 flask-redis]# ls app.py Dockerfile //创建flask-redis镜像 [root@eshop-cache05 flask-redis]# docker build -t happyaged/flask-redis . [root@eshop-cache05 flask-redis]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE happyaged/flask-redis latest 608961b91535 5 minutes ago 916MB
[root@eshop-cache05 flask-redis]# docker run -d --link redis --name flask-redis -e REDIS_HOST=redis happyaged/flask-redis
e00022f018f376ffc75d65b6adda1b3990adc5d38af89a3a97b2b64b9fbc1e16
-d:后台执行
-link:redis,创建的容器可直接通过redis这个名字访问之前创建的redis容器
-name:flask-redis,创建的容器的名称
-e:REDIS_HOST=redis,设置容器的环境变量REDIS_HOST值为redis
//进入flask-redis容器:
[root@eshop-cache05 flask-redis]# docker exec -it flask-redis /bin/bash
//调用py程序
root@e00022f018f3:/app# curl 127.0.0.1:5000
Hello Container World! I have been seen 1 times and my hostname is e00022f018f3.
root@e00022f018f3:/app# curl 127.0.0.1:5000
Hello Container World! I have been seen 2 times and my hostname is e00022f018f3.
但是,退出容器,在宿主机上却不能访问:
root@e00022f018f3:/app# exit
exit
[root@eshop-cache05 flask-redis]# curl 127.0.0.1:5000
curl: (7) Failed connect to 127.0.0.1:5000; Connection refused
若flask-redis容器之外也能访问,需要将5000端口暴露出来
先删除原flask-redis容器,重新创建flask-redis容器,暴露5000端口,如下:
[root@eshop-cache05 flask-redis]# docker run -d -p 5000:5000 --link redis --name flask-redis -e REDIS_HOST=redis happyaged/flask-redis
9e714e5b56a694649a823c132204c68a49996026f0e2fd2420be06d602b58676
宿主机访问:
[root@eshop-cache05 flask-redis]# curl 127.0.0.1:5000
Hello Container World! I have been seen 3 times and my hostname is 9e714e5b56a6.
其他机器也可以访问:
[root@eshop-cache04 ~]# curl 172.28.65.126:5000
Hello Container World! I have been seen 4 times and my hostname is 9e714e5b56a6.
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。