如何在Docker容器中configurationspring cloud oauth2
我遇到了一些微泉docker问题,我想可能是sso token-url不正确。
演示https://github.com/keryhu/micro-oauth2-docker
在本地计算机上,sso服务和auth服务工作正常。
但不是在docker集装箱,
问题是redirect到auth-server超时。
SSO(pc-gateway服务)application.yml:
security: user: password: none oauth2: client: accessTokenUri: http://${AUTHSERVER_PORT_9999_TCP_ADDR:localhost}:9999/uaa/oauth/token userAuthorizationUri: http://${AUTHSERVER_PORT_9999_TCP_ADDR:localhost}:9999/uaa/oauth/authorize
泊坞窗,compose.yml
eureka: image: eureka:0.0.1-SNAPSHOT container_name: eureka hostname: eureka ports: - "8761:8761" configserver: image: config-server:0.0.1-SNAPSHOT container_name: configserver hostname: configserver links: - eureka ports: - "8888:8888" authserver: image: auth-server:0.0.1-SNAPSHOT container_name: authserver hostname: authserver links: - eureka - configserver ports: - "9999:9999" pcgateway: image: pc-gateway:0.0.1-SNAPSHOT container_name: pcgateway hostname: pcgateway links: - eureka - configserver - authserver ports: - "8080:8080"
在Docker容器中启动后:
http://192.168.99.100:8761/显示:
Instances currently registered with Eureka Application AMIs Availability Zones Status AUTHSERVER n/a(1) (1) UP (1) - authserver:authserver:9999 CONFIGSERVER n/a(1) (1) UP (1) - configserver:configserver:8888 PCGATEWAY n/a(1) (1) UP (1) - pcgateway:pcgateway:8080
但是当打开validation页面时: http : //192.168.99.100 : 8080
它应该被redirect到auth-serverlogin页面,但是它打开了Timeout,地址栏是:
http://172.17.0.4:9999/uaa/oauth/authorize?client_id=clientapp&redirect_uri=http://192.168.99.100:8080/login&response_type=code&state=cdXhfg
我不知道为什么,也许上面的sso tokenurl是不正确的。 如何解决?
172.17.0.4
IP地址是内部 (容器 – 容器)networking上的authserver
容器的IP地址, 不能从docker主机(虚拟机)外部访问。
这可能会非常棘手,因为(在这种情况下)您需要提供Docker运行的虚拟机的IP地址,这可能会改变 ,而且在生产中肯定会有所不同。
如果将${AUTHSERVER_PORT_9999_TCP_ADDR:localhost}
更改${AUTHSERVER_PORT_9999_TCP_ADDR:localhost}
192.168.99.100
,则应该可以工作。
我build议使用您在docker-compose.yml中提供的环境variables来configurationIP地址(或域),如下所示:
${DOMAIN_NAME:192.168.99.100}
其中默认为虚拟机的“标准”IP地址。 在生产中,您可以传递您的项目运行的服务器的实际域名或IP地址。
请注意,“链接”环境variables被标记为废弃,并且仅在默认(网桥)networking上使用。 新的链接function不会创build这些variables,但您可以简单地链接到其他容器的名称 。 见https://docs.docker.com/engine/userguide/networking/work-with-networks/#linking-containers-in-user-defined-networks
- 为什么我应该使用ribbon / hystrix / eureka而不是docker + haproxy进行微服务?
- Kubernetes无法获得自己的集群IP
- 如何高效地dockerized java微服务
- Kuberenets Web UI(仪表板)缺less图表
- 如何使用AWS Beanstalk和Spring Cloud Netflixbuild立Docker容器之间的连接
- 为基于docker的微服务使用mysql的最佳方法
- Docker容器A在作为另一个Docker服务B运行的cassandra中查询(插入/更新)之后死亡
- 作为Docker容器运行时,Java Spring不会与Consul通信
- 无法在Docker容器上安装mysql-server