0

我有两个 docker 容器正在运行——一个有 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为新机器手动编辑。我希望设置是跨机器的标准设置,以便我可以通过http://192.168.XX:120的 html 访问 websocket

4

1 回答 1

0

使用链接通过主机名访问另一个容器:

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:
于 2020-02-12T11:08:46.327 回答