我有两个集装箱在运行:
/usr/share/nginx/html中获得。为什么我不能为/search提出一个GET请求,这样这个请求就可以由后端处理?
我总是在浏览器的控制台中获得net::ERR_CONNECTION_REFUSED,即使我已经链接了它们。
这是我的配置:
services:
backend:
image: docker.xxxxx.net/yyyyyy/zzzzzzzz:latest
expose:
- "8080"
ports:
- "8333:8080"
frontend:
build:
dockerfile: Dockerfile
context: .
depends_on:
- "backend"
links:
- backend
ports:
- "80:80"
volumes:
- ./build:/usr/share/nginx/html请注意,在另一台服务器上只启动后端允许我进行API调用(这时出现的唯一问题是CORS),因此后端代码是可以的,问题肯定是在错误的码头配置中。
我可以清楚地打开前端,但我不能进行任何API调用:我尝试了很多东西,比如调用:
http://backend/search?q=testhttp://backend:8080/search?q=testhttp://backend:8333/search?q=testhttp://frontend/search?q=testhttp://frontend:8080/search?q=testhttp://frontend:8333/search?q=test结果是一样的。有什么不对的?
发布于 2016-12-02 12:17:12
我假设GET请求是从您的浏览器发出的,即来自主机,而不是来自前端容器。根据您的配置,8080从后端容器公开到前端容器,端口8333公开给码头主机。因此,只能从前端容器中看到http://backend:8080,而不能从主机上看到。因此,可能必须是http://<docker_ip>:8333/search?q=test才能从后端容器获得响应。
发布于 2016-12-02 12:11:41
尝试通过docker提供的环境变量与源坞进行通信。请参阅这
发布于 2016-12-02 12:12:06
用nginx处理您的CORS错误。
在nginx.conf中配置反向代理。
server {
listen 80 default_server;
server_name _;
location /search {
proxy_pass http://backend:8080;
}
...
}这(或类似的)应该可以解决net::ERR_CONNECTION_REFUSED权限错误。
https://stackoverflow.com/questions/40931707
复制相似问题