Запрос Docker на собственный сервер

У меня есть экземпляр докера, на котором запущен apache на порту 80 и node.js + express, работающий на порту 3000. Мне нужно сделать запрос AJAX с веб-сайта, обслуживаемого apache, на сервер узла, работающий на порту 3000.

Я не знаю, какой URL использовать. Я попробовал localhost, но это разрешилось на localhost клиента, просматривающего веб-страницу (также конечного пользователя), а не на localhost изображения докера.

Заранее спасибо за помощь!

Это зависит ... "api url" должен быть настраиваемым, для среды разработки это должно быть "localhost", но в производстве это должно быть скорее доменное имя. Не зная вашей точной настройки (как вы управляете различными средами, о какой среде вы говорите), вам невозможно помочь.

emix 30.11.2018 12:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
43
2

Ответы 2

Сначала вы должны разделить свои контейнеры - для 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.

Другие вопросы по теме