Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Spring Boot nie może połączyć się z MySQL i kończy pracę w Docker/Docker compose

Przekazujesz DATABASE_HOST , DATABASE_PORT , DATABASE_NAME , DATABASE_USER i DATABASE_PASSWORD ale nie używasz go w swojej aplikacji.

Zaktualizuj swoje właściwości w ten sposób. (Lepiej, jeśli utworzysz profil, aby aplikacja działała poza dokiem)

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

Jeśli naprawdę chcesz używać localhost jako Twój db_url . Możesz także użyć network_mode: "service:[service name]" właściwość docker compose. Jedynym minusem jest to, że ta właściwość nie może być używana z port właściwość.

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

Twój plik właściwości może wyglądać tak

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql - problem z przesunięciem

  2. AWS MySQL RDS kontra AWS DynamoDB

  3. Błąd JQUERY i php post 500 (błąd wewnętrzny serwera)

  4. SQL — Zapytanie, aby sprawdzić, czy ciąg zawiera część wartości w kolumnie

  5. Jedno zapytanie o aktualizację dla wszystkich aktualizacji