sql >> Databáze >  >> RDS >> Mysql

Spring Boot se nemůže připojit k MySQL a exitům v Docker/Docker compose

Předáváte DATABASE_HOST , DATABASE_PORT , DATABASE_NAME , DATABASE_USER a DATABASE_PASSWORD ale nepoužíváte jej ve své aplikaci.

Aktualizujte své vlastnosti takto. (Je lepší, když si vytvoříte profil, aby vaše aplikace běžela mimo docker)

spring.datasource.url=jdbc:mysql://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}

Pokud opravdu chcete použít localhost jako vaše db_url . Můžete také použít network_mode: "service:[service name]" vlastnost docker compose. Jedinou nevýhodou je, že tuto vlastnost nelze použít s port vlastnost.

version: '3'

services: 
  docker-mysql:
    image: mysql:latest
    network_mode: "service:spring-boot-jpa-docker-webapp"
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_PASSWORD=root
  spring-boot-jpa-docker-webapp:
    image: springboot_docker
    depends_on:
      - docker-mysql
    ports:
      - 8080:8080
      - 3306 #Add this only if you want to expose the mysql to outer world.
    environment:
      - DATABASE_USER=root
      - DATABASE_PASSWORD=root
      - DATABASE_NAME=test

A váš soubor vlastností může vypadat takto

spring.datasource.url=jdbc:mysql://localhost:3306/${DATABASE_NAME}?autoReconnect=true
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}


  1. Proč CONCAT() nenastaví výchozí znakovou sadu v MySQL?

  2. Jak přidat počet dní v postgresql datetime

  3. MySQL uděluje uživateli oprávnění k databázi

  4. Služba mysqld se zastaví jednou denně na serveru ec2