美文网首页
Docker之三:实现Service

Docker之三:实现Service

作者: bighippo | 来源:发表于2018-02-06 08:21 被阅读0次

    前言:准备Docker虚机

    1. 安装vm虚机及docker
    2. 修改虚机ip地址,例如:172.16.3.79

    第一部分:实现Product Service

    1. 编写/servicetest/product/api.py
    from flask import Flask
    from flask_restful import Resource, Api
    
    app = Flask(__name__)
    api = Api(app)
    
    
    class Product(Resource):
        def get(self):
            return {'product': ['Ice cream',
                                'Chocolate',
                                'Fruit']}
    
    
    api.add_resource(Product, '/')
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=80, debug=True)
    
    1. 编写/servicetest/product/requirements.txt
    Flask==0.12
    flask-restful==0.3.5
    
    1. 编写/servicetest/product/Dockerfile
    FROM python:3-onbuild
    COPY . /usr/src/app
    CMD ["python","api.py"]
    
    1. 编写/servicetest/docker-compose.yml
    # 版本号为v3
    version: '3'
    
    services:
      product-service:
        # 通过product子目录中的Dockerfile构建容器
        build: ./product
        # 将容器中的/usr/src/app与本机的/product对应
        volumes:
          - ./product:/usr/src/app
        # 容器内80端口与本机5001端口对应
        ports:
          - 5001:80
    
    1. 构建并运行容器
    cd /servicetest
    docker-compose up
    
    在浏览器中访问http://172.16.3.79:5001即可看到输出JSON的格式数据
    
    修改api.py,添加product中的项,刷新浏览器即可看到变化
    

    第二部分:实现Website

    1. 编写/servicetest/website/index.php
    <html>
    <head>
        <title>My Shop</title>
    </head>
    
    <body>
        <h1>Welcome to my shop</h1>
        <ul>
            <?php
                # 获取product容器的json数据
                $json = file_get_contents('http://product-service'); 
                # 用json进行解码
                $obj = json_decode($json);
    
                # 获取每个对象的product属性
                $products = $obj->product;
                # 输出每个对象的product值
                foreach ($products as $product) {
                    echo "<li>$product</li>";
                }
            ?>
        </ul>
    </body>
    </html>
    
    1. 修改/servicetest/docker-compose.yml
    version: '3'
    
    services:
      product-service:
        build: ./product
        volumes:
          - ./product:/usr/src/app
        ports:
          - 5001:80
    
      website:
        # 从官网的php镜像构建
        image: php:apache
        # 容器内的/var/www/html目录与本机的./website对应
        volumes:
          - ./website:/var/www/html
        # 容器内80端口与本机5000端口对应
        ports:
          - 5000:80
        # 依托于上面product-service的容器
        depends_on:
          - product-service
    
    1. 构建并运行容器
    cd /servicetest
    docker-compose up
    在浏览器中访问http://172.16.3.79:5000即可看到输出数据
    
    也可从后台启动
    docker-compose up -d
    
    可检查是否容器启动
    docker ps
    
    停止docker
    docker-compose stop
    

    相关文章

      网友评论

          本文标题:Docker之三:实现Service

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