Mysql
 sql >> база данни >  >> RDS >> Mysql

Spring Boot + docker-compose + MySQL:Връзката е отказана

Docker compose винаги стартира и спира контейнерите в ред на зависимости или последователен във файла, ако не е зададен. Но docker-compose не гарантира, че ще изчака, докато контейнерът на зависимостта се изпълни. Можете да препоръчате тук за повече подробности. Така че проблемът тук е, че вашата база данни не е готова, когато вашият spring-mysql контейнерът се опитва да получи достъп до базата данни. И така, препоръчителното решение е, че можете да използвате чакай.ш или подобен скрипт за обвиване на вашия spring-mysql приложение, стартиращо ENTRYPOINT .

Като пример, ако използвате wait-for-it.sh вашата ENTRYPOINT във вашия Dockerfile трябва да се промени на следното след копиране на горния скрипт в корена на вашия проект:

ENTRYPOINT ["./wait-for-it.sh", "db:3306", "--", "java", "-jar", "app.jar"]

И две други важни неща, които трябва да имате предвид тук, са:

  • Не използвайте връзки, те са оттеглени вместо това трябва да използвате дефинирана от потребителя мрежа. Всички услуги във файла docker-compose ще бъдат в една дефинирана от потребителя мрежа, ако не дефинирате изрично никаква мрежа. Така че просто трябва да премахнете връзките от файла за създаване.
  • Не е необходимо да публикувате порта за докер контейнера, ако го използвате само в дефинираната от потребителя мрежа.


  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

  2. Не мога да се свържа с mysql база данни с play-slick 1.0.1/slick 3.0:грешка в конфигурацията

  3. Как да получите мета данни от базата данни

  4. Работи с AMP (apache mysql php) на Android

  5. Как да създавате и използвате MySQL изгледи