У меня есть экземпляр докера, на котором запущен apache на порту 80 и node.js + express, работающий на порту 3000. Мне нужно сделать запрос AJAX с веб-сайта, обслуживаемого apache, на сервер узла, работающий на порту 3000.
Я не знаю, какой URL использовать. Я попробовал localhost, но это разрешилось на localhost клиента, просматривающего веб-страницу (также конечного пользователя), а не на localhost изображения докера.
Заранее спасибо за помощь!





Сначала вы должны разделить свои контейнеры - для Docker рекомендуется иметь один контейнер на один процесс.
Тогда вам понадобится какой-нибудь инструмент для оркестровки этих контейнеров. Вы можете начать с docker-compose как с самого простого по ИМО.
Он запустит все ваши контейнеры и по умолчанию будет управлять их сетевыми настройками.
Итак, у вас есть следующий файл docker-compose.yml для запуска ваших приложений:
docker-compose.yml
version: '3'
services:
apache:
image: apache
node:
image: node # or whatever
При такой простой конфигурации у вас будут имена хостов в вашей сети apache и node. Итак, внутри вашего приложения узла вы увидите apache как хост apache.
Просто запустите его с docker-compose up
make an AJAX request from the [...] website to the node server
Все JavaScript, HTML и CSS, которые обслуживает Apache, читаются и интерпретируются браузером, который может работать или не работать на том же хосте, что и серверы. Когда вы находитесь на уровне браузера, код не знает, что Docker задействован во всем этом.
Если вы можете обойтись только отправкой ссылок без имен хостов <img src = "/assets/foo.png">, это всегда будет работать без какой-либо конфигурации. В противном случае вам нужно использовать DNS-имя или IP-адрес хоста точно так же, как если бы вы запускали две службы непосредственно на хосте без Docker.
Это зависит ... "api url" должен быть настраиваемым, для среды разработки это должно быть "localhost", но в производстве это должно быть скорее доменное имя. Не зная вашей точной настройки (как вы управляете различными средами, о какой среде вы говорите), вам невозможно помочь.