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

Spring Boot + docker-compose + MySQL:połączenie odrzucone

Docker Compose zawsze uruchamia i zatrzymuje kontenery w kolejności zależności lub w kolejności sekwencyjnej w pliku, jeśli nie podano. Ale docker-compose nie gwarantuje, że będzie czekać na uruchomienie kontenera zależności. Możesz odnieść się tutaj po dalsze szczegóły. Problem polega na tym, że Twoja baza danych nie jest gotowa, gdy Twój spring-mysql kontener próbuje uzyskać dostęp do bazy danych. Zalecanym rozwiązaniem jest więc użycie czekaj-na-to.sh lub podobny skrypt do zawijania spring-mysql uruchamianie aplikacji ENTRYPOINT .

Na przykład, jeśli używasz wait-for-it.sh Twój ENTRYPOINT w pliku Dockerfile powinien zmienić się na następujący po skopiowaniu powyższego skryptu do katalogu głównego projektu:

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

I dwie inne ważne rzeczy do rozważenia to:

  • Nie używaj linków, które są przestarzałe zamiast tego należy użyć sieci zdefiniowanej przez użytkownika. Wszystkie usługi w pliku docker-compose będą znajdować się w jednej sieci zdefiniowanej przez użytkownika, jeśli nie zdefiniujesz jawnie żadnej sieci. Musisz tylko usunąć linki z pliku do tworzenia.
  • Nie musisz publikować portu dla kontenera dockera, jeśli używasz go tylko w sieci zdefiniowanej przez użytkownika.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Transakcja mysql Node.js

  2. Wstawianie danych blob w Javie za pomocą PreparedStatement

  3. MySQL CAST – Jak wpisać Cast w MySQL

  4. Sprawdź, czy istnieje kombinacja rekordów wiele do wielu

  5. OSX ld:nie znaleziono biblioteki dla -lssl