Это мой файл docker-compose, который запускает контейнер NodeJS/PM2
и контейнер React/Nginx
на одном хосте.
version: '3'
services:
nodejs:
image: nodejs_pm2:1.00
container_name: NODE_CONTAINER
ports:
- "8000:8000"
build:
context: ./nodejs
dockerfile: Dockerfile-nodejs
react:
image: react_nginx:1.00
container_name: REACT_CONTAINER
ports:
- "3000:3000"
build:
context: ./react-app
dockerfile: Dockerfile-react
depends_on:
- nodejs
Как видите, моя react
служба depends_on nodejs
.Это должно связать контейнеры, правильно?
Вопрос 1) Предполагая, что это правда, как правильно сделать HTTP-запрос к моему бэкэнду узла?
Вот что япытался сделать с моим конфигурационным файлом nginx:
upstream backend {
server nodejs:8000
}
server {
listen 3000;
location ~ ^/api/[0-9a-z]+/$ {
proxy_pass http://backend/;
include /etc/nginx/proxy_params;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
Это не работает.Фактически это полностью предотвращает появление внешнего интерфейса.Я пытаюсь сделать что-то вроде axios.get("http://backend/api/*")
из моего приложения реакции.Я просмотрел несколько сообщений stackoverflow, и ни один из них, похоже, не работал для меня.
Вопрос 2) Последующий вопрос, какой смысл связывать контейнеры, если два контейнера живут натот же хост, я не могу просто сделать запрос к localhost:port
как обычно?