【发布时间】:2020-07-05 16:48:31
【问题描述】:
我正在尝试在亚马逊网络服务器上设置网络服务器的环境。 我想使用 django、react、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", ... },
}
}]
所以,我希望下面的反应代码可以工作。但它只适用于我的笔记本电脑,它具有与 aws 完全相同的 docker 结构。
...
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 并不是真正的问题......我说的对吗?
我发现 ajax await fetch('http://127.0.0.1:8000/api/'); 的 'localhost' 确实意味着客户端(浏览器)。
我必须在那里使用服务器的公共 IP 吗?
【问题讨论】:
标签: django reactjs docker nginx