2017-12-14 2 views
0

ich mysql in einem Docker Container ausgeführt haben:Kann nicht auf MySQL mit Frühling in Docker verbinden

docker run -it --name mysql-db -e MYSQL_ROOT_PASSWORD=root \ 
    -e MYSQL_DATABASE=db -e MYSQL_USER=root -e MYSQL_PASSWORD=root mysql:latest 
docker start mysql-db 

Ich möchte meine Frühling Boot-Anwendung laufen (mit Maven) in einem anderen Docker Behälter:

docker build -t java-app . 
docker run -it --name java-app --link mysql-db:mysql -p 8080:8080 java-app 
docker start java-app 

Aber ich eine Ausnahme erhalten:

verursacht durch: java.net.ConnectException: Connection refused (Verbindung zurückgewiesen)

Mein Dockerfile:

FROM java:8 
ADD target/demo-0.0.1-SNAPSHOT.jar /usr/share/demo/demo.jar 
ENTRYPOINT ["/usr/bin/java", "-jar", "/usr/share/demo/demo.jar"] 

Mein application.yml:

spring: 
    # General JPA properties 
    jpa: 
     show-sql: false 
     database-platform: org.hibernate.dialect.MySQL57Dialect 
     # Hibernate Specific properties 
     hibernate: 
      ddl-auto: create 
     properties: 
      hibernate: 
       format_sql: false 
    # DataSource configuration 
    datasource: 
     url: jdbc:mysql://mysql:3306/db 
     username: root 
     password: root 

Was ist mein Problem?

MySQL-Protokolle haben Warnungen über -skip-name-resolve mode.

Antwort

1

Sieht aus wie Ihre Datenbank überhaupt nicht funktioniert. Sie können dies überprüfen, indem Sie im zweiten Terminal docker ps oder docker exec -it mysql-db mysql -u root -proot db ausführen. Es wird wahrscheinlich fehlschlagen. Grund dafür ist -e MYSQL_USER=root Flagge, die Sie verwenden. Dieses Docker-Image erstellt den Root-Benutzer mit dem von Ihnen angegebenen Passwort. Wenn Sie den Root-Benutzer erneut erstellen möchten, schlägt dies fehl und der Container wird geschlossen. Ändern Sie es einfach zu -e MYSQL_USER=myuser und es sollte funktionieren.

+0

Datenbank funktioniert, ich habe es mit beiden Befehlen überprüft. Und dein Rat hat nichts geändert. Aber danke trotzdem. –

+1

Ich habe Ihre Befehle reproduziert und db konnte nicht vollständig initialisiert werden. Sie docker starten wieder, aber nicht sicher, ob es funktioniert db. Wenn Sie meinen docker exec-Befehl ausführen, können Sie Abfragen ausführen wie: SHOW TABLES; ? – odk

+0

Ja, ich kann Abfragen ausführen. –

Verwandte Themen