我正在运行一个包含注册表,网关(8080),uaa(9999)和2个微服务(8081和8082)的docker组成的体系结构,并且可以通过下拉选择在网关应用程序中看到Swagger API。我可以使用admin和user登录到网关。我还修改了代码以接受所有者,代理和监视者角色。我可以正常登录。
在终端中,我尝试了Baeldung的curl命令(博客发布),以直接从uaa服务器获取令牌以测试API。
[~]$ curl -X POST --data "username=user&password=user&grant_type=password&scope=openid" http://localhost:9999/oauth/token
curl: (7) Failed to connect to localhost port 9999: Connection refused
我打开了Kitematic,在Docker容器日志中,uaa服务器是localhost(主机)和9999(端口)。
有人可以帮我弄清楚为什么Curl对我不起作用吗?
谢谢
大卫
答案 0 :(得分:1)
几乎可以肯定,此问题与您要部署的堆栈的网络属性有关。
如果您是从主机向http://localhost:9999发出curl命令,则需要确保UAA服务器正在将其端口映射到主机。
您的UAA服务在docker-compose.yml
中有此服务吗?
ports:
- "9999:9999"
如果没有,则需要添加它以便从主机进行测试。
默认情况下,docker-compose将为您的堆栈创建一个桥接网络,您的容器可在其中相互通信并在容器名称上相互解析。但是除非您明确从主机将其公开端口映射到主机上的端口,否则您将无法从主机访问这些容器。