1
resposta

to com uma duvida, estou sando o Mysql com o docker e não estou conseguindo criar as tabelas

Pessoal to com uma duvida aqui já tentei pesquisar e nd. Estou criando um projeto com spring boot e mysql criei o dockerfile e o docker compose ele cria o banco mas não cria as tabelas oq pode ser. E outra duvida como acessar esse banco pela a ide sem ser pela linha de comando?

FROM openjdk:17

WORKDIR /app

COPY target/flixhub-0.0.1-SNAPSHOT.jar /app/flixhub.jar

ENTRYPOINT ["java", "-jar", "flixhub.jar"]

version: '3'
services:
  mysql:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: flixhub_db
      MYSQL_USER: flixhub_user
      MYSQL_PASSWORD: flixhub_password
    ports:
      - 3307:3306
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - flixhub_network

  flixhub-app:
    build: .
    depends_on:
      - mysql
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/flixhub_db
      SPRING_DATASOURCE_USERNAME: flixhub_user
      SPRING_DATASOURCE_PASSWORD: flixhub_password
    networks:
      - flixhub_network

networks:
  flixhub_network:
    driver: bridge

volumes:
  mysql_data:

spring.datasource.url=jdbc:mysql://mysql:3306/flixhub_db
spring.datasource.username=flixhub_user
spring.datasource.password=flixhub_password

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Bruno!

Pelo que você descreveu e compartilhou nos arquivos de configuração do Docker e do Spring Boot, parece que a configuração inicial está correta. No entanto, há algumas coisas que podemos verificar para solucionar o problema da criação das tabelas e o acesso ao banco de dados pela IDE.

  1. Criação das tabelas:

    • Verifique se as entidades no seu projeto Spring Boot estão anotadas corretamente com @Entity e se estão no pacote escaneado pelo Spring.
    • Confirme se a propriedade spring.jpa.hibernate.ddl-auto está definida como update ou create no seu arquivo application.properties ou application.yml. Isso instruirá o Hibernate a gerar as tabelas automaticamente.
    • Assegure-se de que o projeto está sendo construído corretamente e que todas as dependências necessárias estão incluídas no seu arquivo pom.xml ou build.gradle.
  2. Acessar o banco de dados pela IDE:

    • Para acessar o banco de dados MySQL através da sua IDE (como IntelliJ IDEA, Eclipse, etc.), você precisará configurar uma conexão de banco de dados. Isso geralmente é feito na seção de "Database Tools" ou "Database Navigator" da IDE.
    • Use as credenciais e a URL do banco de dados fornecidas no seu arquivo de configuração do Docker (SPRING_DATASOURCE_URL, SPRING_DATASOURCE_USERNAME, SPRING_DATASOURCE_PASSWORD).
    • Como você mapeou a porta 3306 do MySQL para a porta 3307 do host no docker-compose.yml, certifique-se de usar localhost:3307 como host na configuração da conexão da sua IDE.

Caso continue tendo problemas, você pode tentar acessar o container MySQL diretamente para verificar se as tabelas foram criadas ou se há algum log de erro. Para fazer isso, use o comando docker exec -it <container_id_or_name> mysql -u root -p e depois insira a senha quando solicitado.

Quanto à imagem que você compartilhou, ela mostra que o banco de dados flixhub_db existe, mas não contém tabelas. Isso indica que a conexão com o banco de dados está funcionando, mas a criação automática de tabelas pelo Hibernate não está ocorrendo como esperado.

Espero que essas dicas ajudem a resolver o problema. Caso precise de mais ajuda, não hesite em procurar mais informações ou perguntar à comunidade. Espero ter ajudado e bons estudos!