Docker中两个容器之间无法建立WebSocket连接

WebSocket connection between two containers in Docker can not be established

提问人:azizairo 提问时间:11/17/2023 最后编辑:Jason Allerazizairo 更新时间:11/17/2023 访问量:25

问:

我在 Docker 中两个容器之间的 websocket 连接遇到了一些问题。 一般来说,我有一个在Docker容器中运行的kurento服务器,并且我开发了一个演示应用程序,该应用程序通过提供的Java SDK与kurento服务器进行通信,该SDK在后台使用websocket连接。因此,当我尝试使用容器名称作为 websocket 连接 URL 的主机在 Docker 中运行它们时,它失败并出现异常:

未知主机名:kms。

请您帮助解决这个问题。

这是我的Docker撰写文件:

version: '3.3'

services:
  kms:
    image: kurento/kurento-media-server:latest
    ports:
    - "8888:8888"
    container_name: kms
    volumes:
      - type: bind
        source: ./docker/kurento/
        target: /etc/kurento
    networks:
      - main-net

  kurento-demo-server:
    container_name: kurento_demo_server
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - kms
    ports:
    - "8443:8443"
    networks:
      - main-net

networks:
  main-net:
    name: main-net
    driver: bridge

demo-app 的 Docker 文件:

FROM maven:3.8.4-openjdk-17 AS build

WORKDIR /app/

COPY pom.xml .
COPY src ./src

RUN mvn clean package

FROM openjdk:17

WORKDIR /app/

COPY --from=build /app/target/demo-kurento-0.0.1-SNAPSHOT.jar ./app.jar

EXPOSE 8443

CMD ["java", "-jar", "app.jar"]

以下是我如何创建 KurentoClient 以与服务器进行通信:

@Configuration
public class KurentoConfig {

    private static final String KURENTO_URL = "ws://kms:8888";

    @Bean
    public KurentoClient createKurentoClientBean() {

        return KurentoClient.create(KURENTO_URL);
    }
}
spring-boot docker websocket kurento

评论


答: 暂无答案