Я пытаюсь настроить среду для веб-сервера на веб-сервере Amazon. Я хочу использовать django, реагировать, nginx, и они выполняются на каждом docker контейнере.
Ниже приведена команда для запуска docker контейнера.
sudo docker run --name django-server
-it -d -p "8000:8000"
--volume=$(pwd)/trello-copy-django-src:/backend/trello-copy
django-server
sudo docker run --name nginx-server
-d -p "80:80"
--volumes-from react-server
nginx-server
Я не указал пользовательский сетевой мост docker и проверил, что они находятся на том же мосту по умолчанию, набрав $ docker inspect bridge
.
[{
"Name": "bridge",
...,
"Containers": {
"...": { "Name": "django-server", ... },
"...": { "Name": "react-server", ... },
"...": { "Name": "nginx-server", ... },
}
}]
Итак, я ожидал, что код реакции ниже работает. Но он работал только на моем ноутбуке, который имеет точно такую же docker структуру aws.
...
const res = await fetch('http://127.0.0.1:8000/api/');
...
Failed to load resource: net::ERR_CONNECTION_REFUSED
127.0.0.1:8000/api/:1
Что я делаю не так?
Это коды в моем settings.py
файле django.
CORS_ORIGIN_ALLOW_ALL=True # only for dev
CORS_ALLOW_CREDENTIALS=True # only for dev
CORS_ORIGIN_WHITELIST = (
'http://localhost',
'http://localhost:3000',
)
Сообщение CORS было App.js:10 Fetch API cannot load django-server:8000/api/. URL scheme must be "http" or "https" for CORS request.
.
Я думаю, что это другая проблема, и тогда django и CORS на самом деле не проблема ... я прав?
Я обнаружил, что localhost в ajax await fetch('http://127.0.0.1:8000/api/');
означает действительно клиентскую сторону (браузер).
Должен ли я использовать общедоступный c IP сервера?