美文网首页我爱编程
Docker学习之:多容器复杂应用的部署

Docker学习之:多容器复杂应用的部署

作者: __apple | 来源:发表于2018-05-23 15:14 被阅读0次

    经过之前的学习我们已经基本掌握了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
    

    最后建议大家对于不同的模块我们可以放到不同的容器里面,大家抓紧练习吧!抓紧吧!!!!!!

    相关文章

      网友评论

        本文标题:Docker学习之:多容器复杂应用的部署

        本文链接:https://www.haomeiwen.com/subject/tzqkdftx.html