Итак, в моей хост-среде у меня есть служба Tomcat, работающая на порту 10000, чтобы я мог получить доступ к внутренним службам офиса.
У меня есть запись хостов Windows:
localhost developer.mycompany.com
Так что я могу получить доступ к конечной точке developer.mycompany.com:10000/some/url
и в случае успеха вернуть ответ JSON.
У меня также есть композитный файл Docker, который запускает контейнеры nginx и php-fpm и связывает их для запуска среды разработки PHP на основе Linux.
Я пытаюсь добиться того, чтобы докер-контейнер (ы) знал о developer.mycomoany.com
запись хоста. Поэтому, когда мой код PHP на моих контейнерах linke отправляет запрос POST http://developer.mycompany.com:10000/some/url
он знает о входе в хост и может достичь этой конечной точки.
Я попробовал конфиг net=host
но это не работает со связанными контейнерами.
Сообщение об ошибке приложения PHP:
{«result»: {«success»: false, «message»: «Ошибка создания ресурса: [message] fopen (): сбой php_network_getaddresses: getaddrinfo: имя или служба не известны \ n [файл] / srv / http / vendor /» guzzlehttp / 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) запись?
Вот мой docker-compose:
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 с докера.
Спасибо
Я нашел 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;
}
}
Других решений пока нет …