Docker compose PHP-контейнер должен поразить прокси nginx заголовком Host. Как? - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть 3 контейнера. Контейнер, являющийся обратным прокси-сервером nginx:

nginx-proxy:
    image: jwilder/nginx-proxy:latest
    ports:
      - 80:80
      - 443:443
    networks:
      - network

За этими двумя контейнерами php fpm в этой сети. Контейнер A и контейнер B с именами хостов A и B соответственно. Я также добавил их в мой локальный файл хоста:

127.0.0.1 A
127.0.0.1 B

, чтобы я мог связаться с ними с моего локального хоста. Оба отвечают на запросы fastCGI.

Теперь мне нужно выполнить запрос Guzzle в A, чтобы перейти к B. Это должно пройти через прокси-сервер nginx. Как добавить запись в хост-файл контейнера A, чтобы запрос к B перешел на nginx-proxy с заголовком Host: B. Но добавление

extra_hosts:
    - "B:nginx-proxy"

не сработает, и я не могу найти другого способа, кроме жесткого кодирования, который я не хочу делать по понятным причинам.

Docker compose file:

  containerA:
    build:
      context: 'docker'
    volumes:
      - .:/var/www/html
      - ./docker/www.conf:/usr/local/etc/php-fpm.d/zz-docker.conf
    networks:
      - network
    environment:
      VIRTUAL_HOST: containerA
      VIRTUAL_ROOT: /var/www/html/public/index.php
      VIRTUAL_PROTO: fastcgi

  containerB:
    build:
      context: 'docker'
    volumes:
      - .:/var/www/html
      - ./docker/www.conf:/usr/local/etc/php-fpm.d/zz-docker.conf
    networks:
      - network
    environment:
      VIRTUAL_HOST: containerB
      VIRTUAL_ROOT: /var/www/html/public/index.php
      VIRTUAL_PROTO: fastcgi

  nginx-proxy:
    image: jwilder/nginx-proxy:latest
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
    networks:
      - network
    environment:
      DEFAULT_HOST: containerA

networks:
  network:
    driver: bridge
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...