Получение связанных с Docker контейнеров localhost, указывающих на хост localhost

1

Поэтому в моей среде хоста у меня есть эта служба tomcat, работающая на порту 10000, поэтому я могу получить доступ к внутренним службам офиса.

У меня есть запись в Windows:

localhost developer.mycompany.com

Поэтому я могу получить доступ к конечной точке developer.mycompany.com:10000/some/url и в случае успешного ответа json.

У меня также есть файл Docker compose, который развернул контейнеры nginx и php-fpm и связал их, чтобы запустить среду разработки PHP на основе Linux.

То, что я пытаюсь достичь, - сделать контейнер (-ы) докеров осведомлен о записи узла developer.mycomoany.com. Поэтому, когда мой PHP-код в моих контейнерах linke отправляет запрос POST на http://developer.mycompany.com:10000/some/url он знает о записи хоста и способен поразить эту конечную точку.

Я пробовал config net=host но это не работает со связанными контейнерами.

Сообщение об ошибке PHP-приложения:

{"result": {"success": false, "message": "Ошибка создания ресурса: [сообщение] fopen(): php_network_getaddresses: getaddrinfo не удалось: имя или служба неизвестны \n [файл]/srv/http/vendor/gzzlehttp/guzzle/src/Handler/StreamHandler.php\n [строка] 282\n [сообщение] fopen (http://developer.mycompany.com:10000/app/register): не удалось открыть поток: php_network_getaddresses: getaddrinfo не удалось: Имя или служба не известны \n [файл]/srv/http/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php\n[line] 282 "}}

Как включить мое приложение PHP в связанных контейнерах, чтобы поговорить с хостом developer.mycompany.com (localhost)?

Вот мой докер-сочинитель:

app:
  image: linxlad/docker-php-fpm
  tty: true
  ports:
   - "9000:9000"
  volumes:
   - ./logs/php-fpm:/var/log/php-fpm
   - ~/Development/Apps/php-hello-world:/srv/http
web:
  image: linxlad/docker-nginx
  ports:
   - "8080:80"
  volumes:
   - ./conf/nginx:/etc/nginx/conf.d
   - ./logs/nginx:/var/log/nginx
   - ~/Development/Apps/php-hello-world:/srv/http
  links:
   - app

Редактирование:

Это мой вывод ifconfig из докерной машины.

Изображение 174551

благодаря

  • 0
    Я app:host.name свой файл docker composer, так что вы имеете в виду app:host.name и это будет ссылаться на запись host / etc / hosts?
  • 0
    Это имя хоста действительно является службой, на которой выполняется среда хоста. Могут ли мои связанные контейнеры общаться с моей средой хоста localhost / 127.0.0.1? Извините, не очень хорошо с сетями. Разве мне не нужно добавлять запись hosts в мои контейнеры в соответствии с <host env IP address> developer.mycompany.com ?
Показать ещё 2 комментария
Теги:
docker
networking
dockerfile
hosts

1 ответ

0
Лучший ответ

Я нашел IP-адрес моей докерной машины и использовал это в моих хостах конфигурацию прокси-сервера nginx, которая затем перенаправила его в конфигурацию местоположения nginx в моем контейнере докеров.

Хост nginx:

location /apps/myapp/appversion {
    proxy_pass   http://192.168.99.100:8080;
} 

Конфигурация контейнера Docker Nginx:

location /apps/myapp/appversion {
    try_files $uri $uri/ /index.php?args;
    if (!-e $request_filename) {
        rewrite ^/(.*)$ /index.php last;
    }
} 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню