sql >> Database teknologi >  >> RDS >> Mysql

Spring Boot + docker-compose + MySQL:Forbindelse nægtet

Docker compose starter og stopper altid containere i afhængighedsrækkefølge eller sekventiel rækkefølge i filen, hvis ikke givet. Men docker-compose garanterer ikke, at den vil vente, indtil afhængighedsbeholderen kører. Du kan henvise her for yderligere detaljer. Så problemet her er, at din database ikke er klar, når din spring-mysql container forsøger at få adgang til databasen. Så den anbefalede løsning er, at du kan bruge wait-for-it.sh eller lignende script til at indpakke din spring-mysql app, der starter ENTRYPOINT .

Som eksempel hvis du bruger wait-for-it.sh dit ENTRYPOINT i din Dockerfile skal ændres til følgende efter kopiering af ovenstående script til dit projektrod:

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

Og to andre vigtige ting at overveje her er:

  • Brug ikke links, de er forældede du bør bruge brugerdefineret netværk i stedet. Alle tjenester i docker-compose-filen vil være i et enkelt brugerdefineret netværk, hvis du ikke udtrykkeligt definerer noget netværk. Så du skal bare fjerne linkene fra skrivefilen.
  • Du behøver ikke at udgive porten til docker-container, hvis du kun bruger den inden for det brugerdefinerede netværk.


  1. hvordan man automatisk indsætter fremmednøglereferencer i tabeller i mysql eller JDBC?

  2. Indstilling af en værdi for LIMIT, mens du bruger masseindsamling

  3. Sådan fungerer COUNT_BIG() i SQL Server

  4. Sådan sender du en databaseværdi i et hyperlink ved hjælp af PHP + HTML