栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

多容器 GRPC 服务通信

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多容器 GRPC 服务通信

  1. 创建 docker network

    docker network create flask-admin-dev

  2. 编排容器

    # server
    version: "2"
    services:
        notify_service_dev:
            build: .
            image: notify-service:0.1
            container_name: notify_service_dev
            volumes:
                - .:/code
            networks:
                - back
            ports:
                - "50051:50051"
                - "7001:7001"
            tty: true
            restart: always
            entrypoint: /bin/sh -c "npm run dev"
    
    networks:
        back:
            external:
                name: flask-admin-dev
                
    
    # client
    version: "2"
    services:
        mysql_dev:
            image: mysql:5.7.14
            container_name: fa_mysql_dev
            environment:
                - MYSQL_ROOT_PASSWORD=Chuangyizhi2013,
            volumes:
                - ./mysql/my.cnf:/etc/mysql/my.cnf
                - ./init_database.sql:/docker-entrypoint-initdb.d/init_database.sql
                - ./mysql/data:/var/lib/mysql
            ports:
                - "13306:3306"
            networks:
                - back
            restart: always
    
        flask-admin_dev:
            build: .
            image: flask-admin-dev:0.1
            container_name: flask-admin-dev
            volumes:
                - .:/code
            links:
                - mysql_dev
            environment:
                - ENV=dev
                - MYSQL_HOST=mysql_dev
                - MYSQL_USER=root
                - MYSQL_PASSWORD=Chuangyizhi2013,
                - MYSQL_DATAbase=flask_notify
                - MYSQL_PORT=3306
                - FLASK_ENV=development
            networks:
                - back
            ports:
                - "5000:5000"
            tty: true
            restart: always
            entrypoint: /bin/sh -c "python app.py db upgrade && python app.py runserver -h 0.0.0.0 -p 5000"
    
    networks:
        back:
            external:
                name: flask-admin-dev
                
    
    # 注意:需要保证 server 和 client 在同一个 docker 网桥中
    
    
  3. server 端启动服务

    host: 0.0.0.0 或者 127.0.01

  4. client 端连接 GRPC Service 需要使用 GRPC server 中的容器名连接

    with grpc.insecure_channel(notify_service_dev:50051) as ch:

保证服务同一个网桥段下原因:docker 默认会为每个容器创建一个独立的名称空间,如果不指定同一网桥下容器 host,docker 默认会找本容器中的 localhost 地址,由于容器见网络是独立导致多个 GRPC 服务无法相互访问

参考:https://stackoverflow.com/questions/44642241/use-grpc-to-communicate-between-containers

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/694834.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号