Доступ к веб-сокету docker через nginx или через веб-страницу html? - PullRequest
0 голосов
/ 12 февраля 2020

У меня работает два docker контейнера - один имеет веб-сокет, а другой - 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",, то есть локальный IP-адрес для контейнера websocket.

Есть ли способ настроить nginx, чтобы socketUrl: "http://websocket:7000"? Или используя nginx или traefik?

Если я работаю на разных машинах, я должен вручную отредактировать socketUrl для новой машины. Мне бы хотелось, чтобы настройки были стандартными для всех машин, чтобы я мог получить доступ к веб-сокету через html в http://192.168.X.X: 120

1 Ответ

0 голосов
/ 12 февраля 2020

Используйте ссылки для доступа к другому контейнеру через имя хоста:

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:
...