Docker Compose + Spring Boot + Postgres-Funktion
PHP-Editor Xigua präsentiert Ihnen heute ein Tutorial, wie Sie Docker Compose verwenden, um Spring Boot und Postgres zu verbinden. Docker Compose ist ein Tool zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Containern, während Spring Boot ein Framework zum Erstellen von Java-Anwendungen ist und Postgres eine leistungsstarke relationale Datenbank ist. Durch die Kombination dieser drei können wir problemlos eine Entwicklungsumgebung erstellen, die eine Spring Boot-Anwendung und eine Postgres-Datenbank umfasst. In diesem Tutorial lernen Sie Schritt für Schritt, wie Sie alle drei konfigurieren und verbinden, damit Sie schnell mit der Entwicklung Ihrer Anwendungen beginnen können.
Frageninhalt
Ich habe eine Java Spring Boot-Anwendung, die mit einer Postgres-Datenbank funktioniert. Ich möchte Docker für beide verwenden. Ich habe Postgres zunächst einfach in Docker eingefügt und eine docker-compose.yml
-Datei wie folgt definiert:
version: '2' services: db: container_name: sample_db image: postgres:9.5 volumes: - sample_db:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=sample - POSTGRES_USER=sample - POSTGRES_DB=sample - PGDATA=/var/lib/postgresql/data/pgdata ports: - 5432:5432 volumes: sample_db: {}
Wenn ich dann den Befehl gebe sudo dockerd
和 sudo docker-compose -f docker-compose.yml up
时,它正在启动数据库。例如,我可以使用 pgAdmin
进行连接,使用 localhost
作为服务器和端口 5432
。然后,在我的 Spring Boot 应用程序中,在 application.properties
, werden die folgenden Eigenschaften in der Datei definiert.
spring.datasource.url=jdbc:postgresql://localhost:5432/sample spring.datasource.username=sample spring.datasource.password=sample spring.jpa.generate-ddl=true
Jetzt kann ich meine Spring Boot-Anwendung lokal über Spring Suite ausführen und alles funktioniert einwandfrei. Dann möchte ich auch meine Spring Boot-Anwendung als Docker-Image hinzufügen. Ich habe zunächst eine Docker-Datei im Projektverzeichnis erstellt, wie unten gezeigt:
FROM java:8 EXPOSE 8080 ADD /target/manager.jar manager.jar ENTRYPOINT ["java","-jar","manager.jar"]
Dann habe ich das Projektverzeichnis eingegeben, in dem mvn clean
veröffentlicht wurde, und dann mvn install
. Geben Sie als Nächstes docker build -f Dockerfile -t manager .
ein, gefolgt von docker tag 9c6b1e3f1d5e myuser/manager:latest
(die ID ist korrekt). Abschließend habe ich die vorhandene mvn clean
的项目目录,然后是mvn install
。接下来,发出 docker build -f Dockerfile -t manager .
,后跟 docker tag 9c6b1e3f1d5e myuser/manager:latest
(id 是正确的)。最后,我编辑了现有的 docker-compose.yml
-Datei wie folgt bearbeitet:
version: '2' services: web: image: myuser/manager:latest ports: - 8080:8080 depends_on: - db db: container_name: sample_db image: postgres:9.5 volumes: - sample_db:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=sample - POSTGRES_USER=sample - POSTGRES_DB=sample - PGDATA=/var/lib/postgresql/data/pgdata ports: - 5432:5432 volumes: sample_db: {}
Wenn ich jetzt jedoch den Befehl sudo docker-compose -f docker-compose.yml up
gebe, startet die Datenbank wieder korrekt, aber ich erhalte eine Fehlermeldung und beende den Vorgang mit Code 1 des Webanwendungsabschnitts. Das Problem ist die Verbindungszeichenfolge. Ich glaube, ich muss es in etwas anderes ändern, aber ich weiß nicht, was es sein soll. Ich erhalte folgende Fehlermeldung:
web_1 | 2017-06-27 22:11:54.418 ERROR 1 --- [ main] o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool. web_1 | web_1 | org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections
Irgendwelche Ideen?
Workaround
Jeder Container verfügt über eine eigene Netzwerkschnittstelle und einen eigenen lokalen Host. Ändern Sie also die Art und Weise, wie Java auf Postgres verweist:
spring.datasource.url=jdbc:postgresql://localhost:5432/sample
An:
spring.datasource.url=jdbc:postgresql://db:5432/sample
db
wird zur richtigen Postgres-IP aufgelöst.
Bonus. Mit Docker-Compose müssen Sie Images nicht manuell erstellen. Also ändern:
web: image: myuser/manager:latest
An:
web: build: .
Ich hatte das gleiche Problem und es hat einige Zeit gedauert, bis ich es verstanden und gelöst habe :
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
Ich zeige alle Eigenschaften, damit jeder sie verstehen kann.
application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.username=postgres spring.datasource.password=postgres spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL82Dialect spring.jpa.hibernate.ddl-auto=update
docker-compose.yml:
version: "3" services: springapp: build: . container_name: springapp environment: SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/testdb ports: - 8000:8080 restart: always depends_on: - db db: image: postgres container_name: db environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=testdb - PGDATA=/var/lib/postgresql/data/pgdata ports: - 5000:5432 volumes: - pgdata:/var/lib/postgresql/data restart: always volumes: pgdata:
Um die Spring-Anwendung mithilfe einer lokalen Datenbank zu starten, verwenden wir die URL localhost.
Um über eine Datenbank eine Verbindung zum Container herzustellen, müssen wir den „localhost“ im Datenbankdienst ändern, in meinem Fall „localhost“ in „db“.
Lösung: Fügen Sie die Umgebung SPRING_DATASOURCE_URL
in docker-compose.yml
中添加SPRING_DATASOURCE_URL
环境,重写spring.datasource.url
hinzu und schreiben Sie den Verbindungswert spring.datasource.url
neu:
environment: SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/testdb
Ich hoffe, das hilft den Leuten, Zeit zu sparen.
Das obige ist der detaillierte Inhalt vonDocker Compose + Spring Boot + Postgres-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Ein Java-Emulator ist eine Software, die Java-Anwendungen auf einem Computer oder Gerät ausführen kann. Es kann die virtuelle Java-Maschine simulieren und Java-Bytecode ausführen, sodass Benutzer Java-Programme auf verschiedenen Plattformen ausführen können. Java-Simulatoren werden häufig in der Softwareentwicklung, beim Lernen und Testen eingesetzt. In diesem Artikel werden fünf nützliche und praktische Java-Emulatoren vorgestellt, die den Anforderungen verschiedener Benutzer gerecht werden und Benutzern dabei helfen, Java-Programme effizienter zu entwickeln und auszuführen. Der erste Emulator war Eclipse. Ekl

Häufige Probleme und Lösungen für log4j-Konfigurationsdateien Im Entwicklungsprozess von Java-Anwendungen ist die Protokollierung eine sehr wichtige Funktion. Und log4j ist ein weit verbreitetes Protokollierungsframework in Java. Es definiert den Ausgabemodus von Protokollen über Konfigurationsdateien und ist sehr praktisch, um die Ebene und den Ausgabeort von Protokollen zu steuern. Bei der Konfiguration von log4j treten jedoch manchmal Probleme auf. In diesem Artikel werden einige häufige Probleme und deren Lösungen vorgestellt und spezifische Codebeispiele angehängt. Problem 1: Die Protokolldatei generiert keine Lösung:

Java ist eine leistungsstarke Programmiersprache, mit der Benutzer eine breite Palette von Anwendungen erstellen können, z. B. das Erstellen von Spielen, das Erstellen von Webanwendungen und das Entwerfen eingebetteter Systeme. Debian12 ist ein leistungsstarkes, neu veröffentlichtes Linux-basiertes Betriebssystem, das eine stabile und zuverlässige Grundlage für das Gedeihen von Java-Anwendungen bietet. Zusammen mit Java- und Debian-Systemen können Sie eine Welt voller Möglichkeiten und Innovationen eröffnen, die den Menschen sicherlich sehr helfen können. Dies ist nur möglich, wenn Java auf Ihrem Debian-System installiert ist. In dieser Anleitung erfahren Sie: So installieren Sie Java auf Debian12. So installieren Sie Java auf Debian12. So entfernen Sie Java aus Debian12

Das Unit-Testing-Framework JUnit ist ein weit verbreitetes Tool, dessen Hauptvorteile automatisiertes Testen, schnelles Feedback, verbesserte Codequalität und Portabilität sind. Es weist jedoch auch Einschränkungen auf, darunter begrenzter Umfang, Wartungskosten, Abhängigkeiten, Speicherverbrauch und fehlende Unterstützung für kontinuierliche Integration. Für Unit-Tests von Java-Anwendungen ist JUnit ein leistungsstarkes Framework, das viele Vorteile bietet, bei der Verwendung müssen jedoch seine Einschränkungen berücksichtigt werden.

Oracle ist ein weltbekannter Anbieter von Datenbankmanagementsystemen und seine API (Application Programming Interface) ist ein leistungsstarkes Tool, das Entwicklern hilft, einfach mit Oracle-Datenbanken zu interagieren und diese zu integrieren. In diesem Artikel befassen wir uns mit dem Oracle API-Nutzungsleitfaden, zeigen den Lesern, wie sie die Datenschnittstellentechnologie während des Entwicklungsprozesses nutzen können, und stellen spezifische Codebeispiele bereit. 1.Orakel

IDEA (IntelliJIDEA) ist eine leistungsstarke integrierte Entwicklungsumgebung, die Entwicklern dabei helfen kann, verschiedene Java-Anwendungen schnell und effizient zu entwickeln. Bei der Java-Projektentwicklung kann uns die Verwendung von Maven als Projektmanagement-Tool dabei helfen, abhängige Bibliotheken besser zu verwalten, Projekte zu erstellen usw. In diesem Artikel werden die grundlegenden Schritte zum Erstellen eines Maven-Projekts in IDEA detailliert beschrieben und spezifische Codebeispiele bereitgestellt. Schritt 1: Öffnen Sie IDEA und erstellen Sie ein neues Projekt. Öffnen Sie IntelliJIDEA

Wie verbinde ich mich mit Java mit der MySQL-Datenbank? Wenn ich es versuche, erhalte ich java.sql.sqlexception:nosuitabledriverfoundforjdbc:mysql://database/tableatjava.sql.drivermanager.getconnection(drivermanager.java:689)atjava.sql.drivermanager.getconnection(drivermanager.java:247) oder

Was ist JMX? JMX (Java Monitoring and Management) ist ein Standard-Framework, mit dem Sie Java-Anwendungen und deren Ressourcen überwachen und verwalten können. Es bietet eine einheitliche API für den Zugriff auf und die Bearbeitung der Metadaten und Leistungseigenschaften einer Anwendung. MBean: Management BeanMBean (Management Bean) ist das Kernkonzept in JMX. Es kapselt einen Teil der Anwendung, der überwacht und verwaltet werden kann. MBeans verfügen über Eigenschaften (lesbar oder beschreibbar) und Operationen (Methoden), die verwendet werden, um auf den Status der Anwendung zuzugreifen und Operationen auszuführen. MXBean: Verwaltungserweiterung BeanMXBean ist eine Erweiterung von MBean, die erweiterte Überwachungs- und Verwaltungsfunktionen bietet. MXBeans werden durch die JMX-Spezifikation definiert und sind vordefiniert