经过之前的学习我们已经基本掌握了docker的相关用法,这节课我们来讲一个稍微复杂点的app的部署方式。
首先我们把源码给大家贴出来
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)
Dockerfile文件如下:
FROM python:2.7
LABEL maintaner="apple 1991585851@qq.com"
COPY . /app/
WORKDIR /app
RUN pip install flask redis
EXPOSE 5000
CMD [ "python", "app.py" ]
我们这里面并没有处理redis的部分,那么这个时候我们需要单独起一个container来处理redis,让它俩有个相互访问的关系就可以了。
我们首先创建一个redis的容器
sudo docker run -d --name redis redis
接着我们运行这个容器
sudo docker run -d --link redis --name flask-redis -e REDIS_HOST=redis applego/flask-redis
- -d 是后台运行
- --link redis 代表可以通过redis直接连这个container
- REDIS_HOST 设置环境变量 redis
此时我们在container里面就可以直接访问了,不行你看
root@5df400fb6613:/app# curl 127.0.0.1:5000
Hello Container World! I have been seen 1 times and my hostname is 5df400fb6613.
但是我们如果想在想在外部访问应该怎么做呢?
我们首先把flask-redis 停掉,紧接着删除,然后再次启动,看下面
[vagrant@docker-node1 flask-redis]$ sudo docker stop flask-redis
flask-redis
[vagrant@docker-node1 flask-redis]$ sudo docker rm flask-redis
flask-redis
[vagrant@docker-node1 flask-redis]$ sudo docker run -d -p 5000:5000 --link redis --name flask-redis -e REDIS_HOST=redis applego/flask-redis
44533f7783e756e767a0e29a7c160b01b32e4cf9b83eff142e83794d5ebe72bd
最后建议大家对于不同的模块我们可以放到不同的容器里面,大家抓紧练习吧!抓紧吧!!!!!!
网友评论