通过 html 网页通过 nginx 或 traefik 访问 docker 容器 websocket?

Accessing docker container websocket through nginx or traefik via html web page?

我有两个 docker 容器 运行ning - 一个是 websocket,另一个是 nginx 容器。使用 docker-compose.yml 设置如下:

version: "3.5"

  websocket: 
    build:
      context: .
      dockerfile: Dockerfile
    ports: 
      - "6000:7000"

  nginx:
    image: nginx:alpine
    restart: always
    ports:
      - "120:80"

在我的 index.html 中的 nginx 容器中,我目前必须设置 socketUrl: "http://192.168.X.X:6000", 即websocket 容器的本地 IP 地址。

有没有办法设置 nginx 以便socketUrl: "http://websocket:7000"?使用 nginx 还是 traefik?

如果我 运行 在不同的机器上,我必须为新机器手动编辑 socketUrl。我希望设置成为跨机器的标准设置,以便我可以通过 html 在 http://192.168.X.X:120

访问 websocket

使用链接通过主机名访问其他容器:

version: "3.5"

services:
  websocket: 
    build:
      context: .
      dockerfile: Dockerfile
    container_name: websocket
    ports: 
      - "6000:7000"

  nginx:
    image: dperson/nginx
    container_name: nginx
    ports:
      - "120:80"
    environment:
      - STREAM=0.0.0.0:80;websocket:7000
    links:
      - websocket

如果这不起作用,强制他们在同一网络上:

version: "3.5"

services:
  websocket: 
    build:
      context: .
      dockerfile: Dockerfile
    container_name: websocket
    ports: 
      - "6000:7000"
    networks:
      - default

  nginx:
    image: dperson/nginx
    container_name: nginx
    ports:
      - "120:80"
    environment:
      - STREAM=0.0.0.0:80;websocket:7000
    links:
      - websocket
    networks:
      - default

networks:
  default: