Cześć,
Mam trzy niezależne aplikacje, które chcę odpalić jako trzy niezależne kontenery w Dockerze. Jedna z nich to serwer Eureka a dwie pozostałe to są jakieś proste Hello-Worldy do testowania tego wszystkiego. Gdy cały tercet odpalam bezpośrednio przez SpringBoot to wszystko działa OK -> w pliku regustration-server.yaml jako adres Eureka mam podany po prostu localhost. Schody zaczynają się dopiero gdy próbuję do odpalić w Dockerze. Używam do tego celu docker-composer i mój plik yaml wygląda tak:
version: '2'
services:
demo:
image: springio/demo
ports:
- "1111:1111"
networks:
test:
ipv4_address: 172.18.17.10
demo-client:
image: springio/demo-client
ports:
- "2222:2222"
networks:
- test
depends_on:
- demo
# demo-client-consumer:
# image: springio/demo-client-consumer
# ports:
# - "3333:3333"
# networks:
# - test
# depends_on:
# - demo
# - demo-client
networks:
test:
ipam:
config:
- subnet: 172.18.17.0/24
gateway: 172.18.17.1
Kontener z Eureką odpala się normalnie i jest pozornie dostępny na porcie 1111 pod statycznym IP kontenera, jak i z IP hosta. Problem polega na tym jak zewnętrzny serwis próbuje się tam rejestrować. Gdy rejestruje się coś odpalanego "standalone" ze SpringBoot, czy też z innego kontenera to dostaje 403 i w logu mam coś takiego
2017-03-01 14:40:23.557 INFO 4897 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_TEST-SERVICE/192.168.188.151:test-service:2222: registering service...
2017-03-01 14:40:23.586 WARN 4897 --- [nfoReplicator-0] c.n.d.s.t.d.RetryableEurekaHttpClient : Request execution failure with status code 403; retrying on another server if available
2017-03-01 14:40:23.587 WARN 4897 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_TEST-SERVICE/192.168.188.151:test-service:2222 - registration failed Cannot execute request on any known server
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.4.10.jar:1.4.10]
(...)
SecurityConfig ze Spring Security mam zrobione w taki sposób, czyli niby powinno puszczać wszystko:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll();
}
}
I teraz pytanie, bo już nie wiem gdzie szukać przyczyny. To 403 bierze się ze Springa (spring secutiy) czy z Eureki?