亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

docker 容器之間的 gRPC 通信

docker 容器之間的 gRPC 通信

喵喔喔 2023-06-08 20:53:44
我的本地(沒有 docker)很好,工作沒有任何問題。本地設置工作正常。Server-Jar:運行于 8081Client-War:運行在 8000,可以毫無問題地連接到 Server Jar。DOCKER 設置docker-compose.yml服務器employee:    image: openjdk:jdk-alpine    container_name: "employee"    ports:      - 9081:8080      - 9991:9990      - 65193:65193    volumes:      - ./Employee/target/Employee-1.0-SNAPSHOT-jar-with-dependencies.jar:/deployments/Employee-1.0-SNAPSHOT-jar-with-dependencies.jar    environment:      - JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=0.0.0.0:65193,suspend=n,server=y -Djava.net.preferIPv4Stack=true      - GRPC_PORT=8080    command: java -jar /deployments/Employee-1.0-SNAPSHOT-jar-with-dependencies.jarclient:    image: jboss/wildfly    container_name: "client"    ports:      - 9080:8080      - 9990:9990      - 65193:65193    volumes:      - ./Service/target/Service.war:/opt/jboss/wildfly/standalone/deployments/Service.war    environment:      - JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=0.0.0.0:65193,suspend=n,server=y -Djava.net.preferIPv4Stack=true      - EMPLOYEE_HOST=localhost:9081    command: >      bash -c "/opt/jboss/wildfly/bin/add-user.sh admin Admin#007 --silent && /opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0"links:  - employeedepends_on:  - employee員工服務器代碼Server server = ServerBuilder.forPort(Integer.parseInt(env.get("GRPC_PORT")))        .addService(new Employee())        .build();try {    server.start();    System.out.println("Server listening at: " + env.get("GRPC_PORT"));    server.awaitTermination();} catch (IOException | InterruptedException e) {    e.printStackTrace();}客戶端連接代碼。ManagedChannel channel = ManagedChannelBuilder.forTarget(env.get("EMPLOYEE_HOST")).usePlaintext().build();EmployeeServiceGrpc.EmployeeServiceBlockingStub employee = EmployeeServiceGrpc.newBlockingStub(channel);當我進行 gRPC 調用時拋出錯誤。您認為 docker 設置正確嗎?如果那么我可以在其他地方尋找問題
查看完整描述

1 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

看到這個人為的例子:


version: "3"


services:


  server:

    image: nginx:1.17.3

    restart: always

    container_name: nginx

    expose:

    - "80"

    ports:

    - 8888:80


  client:

    image: busybox:1.31.0

    restart: always

    depends_on:

    - server

    container_name: busybox

    command:

    - ash

    - -c

    - |

      while true;

      do

        wget --spider http://server:80 2>&1

        sleep 5s;

      done;

client通過端口訪問 Nginx 容器80,但它用作server主機地址以解析到適當的 (Nginx) 容器。


如果您要替換server為localhostin client,則客戶端會嘗試wget對自己執行命令,但會失敗。


因為server發布8888到主機,當 Docker Compose 啟動時,從主機(?。憧梢詗get http://localhost:8888并且這將起作用(200)。


查看完整回答
反對 回復 2023-06-08
  • 1 回答
  • 0 關注
  • 348 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號