Как настроить nginx-прокси, чтобы выбрать правильный контейнер без номера порта - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь настроить прокси nginx на виртуальной машине Google Compute. Поэтому я бы хотел, чтобы мое доменное имя (www.example.com) переместилось в нужный контейнер. Но по какой-то причине это работает, только если я добавлю номер порта в адресную строку (www.example.com:3001), что полностью противоречит цели.

Может кто-нибудь дать мне знать, что я делаю не так?

nginx-proxy docker-compose.yml

version: '3'
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
    networks:
      - backend
networks:
  backend:
    driver: bridge

app docker-compose.yml

version: '3'
services:
  api:
    image: api-image:latest
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - 3000:8080
    networks:
      - backend
  public:
    image: app-image:latest
    build:
      context: ./frontend
      dockerfile: Dockerfile
    ports:
      - 3001:8081
    networks:
      - backend
    environment:
      - VIRTUAL_HOST=www.example.com
      - VIRTUAL_PORT=3001
networks:
  backend:
    driver: bridge

Таким образом, вышеприведенное правильно проксирует к контейнеру public, когда я помещаю www.example.com:3001.

Идеи ?? Спасибо!

1 Ответ

0 голосов
/ 09 января 2019

Вы определили этот блок в 2 файлах.

networks:
  backend:
    driver: bridge

Кажется, это та же сеть, но это не так. Если вы docker network ls, вы увидите 2 сети с именами проектов в качестве префикса.

Измените его на:

networks:
  backend:
    external: true

И создайте сеть вручную с помощью docker network create backend

...