Oi pessoal,
Parece ser um problema de comunicação de rede.
- Se vocês estão tentando rodar um container docker da sua aplicação Spring, mas ela não está encontrando o seu container MySQL...
Cada container possui a sua própria rede isolada, se vocês quiserem que mais de um container conversem entre si vão precisar criar uma rede docker e adicionar esses containers a rede. Mas apenas isso não vai funcionar, vocês também vão precisar passar o DNS/IP do container MySQL lá no application.properties, pois apesar de os containers estarem na mesma rede, cada container é como uma maquina separada e cada um tem seu próprio loopback. Será necessário remover o "localhost" e adicionar o DNS/IP do container MySQL, pois "localhost" aponta sempre para o loopback, no caso, para ele próprio. Feito isso, não se esqueça de buildar o projeto novamente e criar uma nova imagem docker com essa nova build.
Exemplos:
// criando uma rede docker
docker network create minha-rede-personalizada
// para criar um container já conectado a rede docker basta usar o seguinte argumento na criação do container:
--network nome-da-minha-rede
// se você quiser, não precisa refazer o container pra conecta-lo a nova rede, dá pra adicionar ele a rede:
docker network connect minha-rede-personalizada nome-do-meu-container
Eu passo o datasource do meu banco de dados assim:
// caso o Spring encontre a variável de ambiente DB_HOST, irá utiliza-la como caminho, caso não encontre irá utilizar localhost
spring.datasource.url=jdbc:mysql://${DB_HOST:localhost}:3306/alurafood-pedidos?createDatabaseIfNotExist=true
No meu caso, essa variável DB_HOST não existe no meu sistema nativo, eu apenas crio ela dentro do container da minha aplicação Spring, então quando eu rodo na minha máquina, o Spring usa localhost, quando eu rodo no container, usa DB_HOST. Quando vou criar o container da minha aplicação Spring passo o seguinte argumento:
-e DB_HOST=DNS-ou-IP-do-meu-container
Se estiver enfrentando erro de testes no build da aplicação após fazer a alteração no application.properties, utilize o mvn clean install -DskipTests
para fazer o build
Isso que eu falei foi baseado em vocês estarem rodando containers na máquina de vocês. Se esses containers rodarem na nuvem vou ficar devendo no conhecimento kkkk
Espero que essas dicas ajudem vocês de alguma maneira. Bons estudos!