Поэтому в моей среде хоста у меня есть эта служба 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 из докерной машины.
благодаря
Я нашел 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;
}
}
app:host.name
свой файл docker composer, так что вы имеете в видуapp:host.name
и это будет ссылаться на запись host / etc / hosts?<host env IP address> developer.mycompany.com
?