0
respostas

Não consigo conectar minha aplicacao com um banco local

Ola,

Estava na aula de como fazer a comunicacao entre containers e o professor usou um exemplo de uma imagem ubuntu. Porem na minha maquina eu tenho uma aplicacao em Java/SpringBoot e queria conectar a imagem dela com o banco de dados que uso que tambem é uma imagem docker. Ao rodar os seguintes comandos a aplicacao na hora de dar o run na imgem nao consegue se conectar no banco.

Este é o docker-compose do banco de dados local:

version: '2'
services:
  mysql:
    container_name: mysql
    restart: always
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: 'sa123456'
      MYSQL_USER: 'sa'
      MYSQL_PASS: 'sa123456'
    ports: 
      - 3306:3306
    volumes:
      - /home/diego/dockers/mysql/data:/var/lib/mysql
    networks:
      - minha-rede

networks:
  minha-rede:
    driver: bridge

Ao dar um docker inspect nele, encontro a seguinte informacao na aba de network:

 "Networks": {
                "mysql_minha-rede": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "f0cd5ac24e79",
                        "mysql"
                    ],
                    "NetworkID": "a4a8159c8b33257c351974eebb7a0ff35c4a8c0368d3798a61f037fbce4e99b0",
                    "EndpointID": "182531cf9d6c63ab32ac88d3413a03ad57447f081f510e2908678ab4ed641cfb",
                    "Gateway": "172.21.0.1",
                    "IPAddress": "172.21.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:15:00:02",
                    "DriverOpts": null
                }
            }

Entao eu copiei este ip e coloquei no properties da minha aplicacao:

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://172.21.0.2:3306/master?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=sa123456
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

O meu dockerfile esta assim:

FROM openjdk:11
ADD target/buscadorvalor-1.0.0.jar buscadorvalor.jar
ENTRYPOINT [ "java","-jar","-Dspring.profiles.active=build","buscadorvalor.jar" ]

Se eu rodo o dockerifle ele nao consegue se conectar no banco. Se eu pego o id gerado pelo dockerfile e rodo o seguinte comando:

docker run dc87233aa137 -d --network mysql_minha-rede

Ele tambem nao consegue se conectar ao banco de dados que foi declarado ali em cima.

Poderia me dizer aonde estou errado por favor.