Estou tentando executar meus aplicativos Spring em contêineres,
no momento, tenho 2 contêineres, 1 executando meu Spring Config Server, executando na porta 8888, se eu abrir um navegador, obtenho as propriedades, sem problemas (eu acho),
o segundo contêiner é o Spring Eureka Discovery Server, rodando na porta 8787, mas quando eu construo o projeto no maven, depois construo a imagem e a executo, recebo estes erros no log:
2025-04-07 12:03:56 2025-04-07T18:03:56.388Z INFO 1 --- [app-seven-eureka] [ main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://10.1.10.220:8888
2025-04-07 12:03:59 2025-04-07T18:03:59.853Z INFO 1 --- [app-seven-eureka] [ main] c.c.c.ConfigServicePropertySourceLocator : Exception on Url - http://10.1.10.220:8888:org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://10.1.10.220:8888/app-seven-eureka/default": No route to host. Will be trying the next url if available
2025-04-07 12:03:59 2025-04-07T18:03:59.853Z WARN 1 --- [app-seven-eureka] [ main] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for "http://10.1.10.220:8888/app-seven-eureka/default": No route to host
2025-04-07 12:03:59 2025-04-07T18:03:59.857Z INFO 1 --- [app-seven-eureka] [ main] .s.AppMSEurekaApplication : No active profile set, falling back to 1 default profile: "default"
e o aplicativo não responde e alguns outros erros são lançados, e como não consigo ver, isso ocorre porque ele não está carregando os parâmetros de configuração do servidor de configuração...
iniciar o segundo aplicativo do Eclipse ou executar o jar no terminal não gera erro, o servidor inicia corretamente e responde na porta correta, quando está dentro do contêiner,
este é meu dockerfile :
FROM openjdk:25-oraclelinux8
WORKDIR /app
COPY target/app-seven-eureka-1.0.0.jar /app/app7.jar
EXPOSE 8787
ENTRYPOINT ["java", "-jar", "/app/app7.jar"]
Alterei meu application.properties para bootstrap.properties conforme recomendado nesta pergunta, mas sem efeito: Spring Cloud Config Client: Buscando configuração do servidor errado
Meu comando para executar o contêiner é: docker run -p 8787:8787 app-seven-eureka
Então, estou esquecendo de alguma coisa? Preciso passar um parâmetro adicional ao criar o contêiner? Ou qual pode ser o problema?
Solução:
Mudei para o docker composer para criar os contêineres e criei uma rede entre eles:
services:
service-config:
container_name: app-seven-config
networks:
- app-seven-network
service-eureka:
container_name: app-seven-eureka
networks:
- app-seven-network
extra_hosts:
- "docker.internal:127.0.0.1"
networks:
app-seven-network:
driver: bridge
Seus contêineres compartilham a mesma rede? Olhando para o comando run que você forneceu, a resposta provavelmente é não.
Da documentação do docker https://docs.docker.com/engine/network/
Tendo isso, você vai querer criar uma rede primeiro e depois executar seus contêineres
Alternativamente, você pode usar o Docker Compose para gerenciar seus contêineres