Docker Compose + Spring Boot + Postgres
L'éditeur PHP Xigua vous propose aujourd'hui un tutoriel sur la façon d'utiliser Docker Compose pour connecter Spring Boot et Postgres. Docker Compose est un outil permettant de définir et d'exécuter des applications Docker multi-conteneurs, tandis que Spring Boot est un framework pour créer des applications Java et Postgres est une puissante base de données relationnelle. En utilisant ces trois éléments ensemble, nous pouvons facilement créer un environnement de développement comprenant une application Spring Boot et une base de données Postgres. Ce didacticiel vous guidera étape par étape pour apprendre à configurer et connecter les trois, afin que vous puissiez rapidement commencer à développer vos applications.
Contenu de la question
J'ai une application Java Spring Boot qui fonctionne avec une base de données Postgres. Je souhaite utiliser Docker pour les deux. Au départ, je viens de mettre Postgres dans Docker et j'ai défini un fichier docker-compose.yml
comme ceci :
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: {}
Ensuite, lorsque j'émets la commande sudo dockerd
和 sudo docker-compose -f docker-compose.yml up
时,它正在启动数据库。例如,我可以使用 pgAdmin
进行连接,使用 localhost
作为服务器和端口 5432
。然后,在我的 Spring Boot 应用程序中,在 application.properties
, les propriétés suivantes sont définies dans le fichier.
spring.datasource.url=jdbc:postgresql://localhost:5432/sample spring.datasource.username=sample spring.datasource.password=sample spring.jpa.generate-ddl=true
À ce stade, je peux exécuter mon application Spring Boot localement via Spring Suite et tout fonctionne bien. Ensuite, je souhaite également ajouter mon application Spring Boot en tant qu'image Docker. J'ai d'abord créé un Dockerfile dans le répertoire du projet comme indiqué ci-dessous :
FROM java:8 EXPOSE 8080 ADD /target/manager.jar manager.jar ENTRYPOINT ["java","-jar","manager.jar"]
Ensuite, je suis entré dans le répertoire du projet où mvn clean
a été publié, puis mvn install
. Ensuite, émettez docker build -f Dockerfile -t manager .
suivi de docker tag 9c6b1e3f1d5e myuser/manager:latest
(l'identifiant est correct). Finalement, j'ai édité le fichier mvn clean
的项目目录,然后是mvn install
。接下来,发出 docker build -f Dockerfile -t manager .
,后跟 docker tag 9c6b1e3f1d5e myuser/manager:latest
(id 是正确的)。最后,我编辑了现有的 docker-compose.yml
existant comme ceci :
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: {}
Cependant, maintenant, si j'émets la commande sudo docker-compose -f docker-compose.yml up
, la base de données redémarre correctement, mais j'obtiens une erreur et je sors avec le code 1 de la section de l'application Web. Le problème est la chaîne de connexion. Je crois que je dois le remplacer par autre chose mais je ne sais pas ce que cela devrait être. J'obtiens le message d'erreur suivant :
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
Des idées ?
Solution de contournement
Chaque conteneur possède sa propre interface réseau et son propre hôte local. Alors changez la façon dont Java pointe vers Postgres :
spring.datasource.url=jdbc:postgresql://localhost:5432/sample
À :
spring.datasource.url=jdbc:postgresql://db:5432/sample
db
résoudra la bonne adresse IP Postgres.
Bonus. Avec docker-compose, vous n'avez pas besoin de créer des images manuellement. Alors changez :
web: image: myuser/manager:latest
À :
web: build: .
J'ai eu le même problème et il m'a fallu du temps pour le comprendre et le résoudre :
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.
Je montre toutes les propriétés pour que tout le monde puisse comprendre.
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:
Pour lancer l'application Spring à l'aide d'une base de données locale, nous utilisons l'url localhost.
Afin de nous connecter au conteneur à l'aide d'une base de données, nous devons changer le "localhost" sur le service de base de données, dans mon cas "localhost" en "db".
Solution : Ajoutez l'environnement SPRING_DATASOURCE_URL
dans docker-compose.yml
中添加SPRING_DATASOURCE_URL
环境,重写spring.datasource.url
et réécrivez la valeur de connexion spring.datasource.url
:
environment: SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/testdb
J'espère que cela aidera les gens à gagner du temps.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Un émulateur Java est un logiciel qui peut exécuter des applications Java sur un ordinateur ou un appareil. Il peut simuler la machine virtuelle Java et exécuter le bytecode Java, permettant aux utilisateurs d'exécuter des programmes Java sur différentes plates-formes. Les simulateurs Java sont largement utilisés dans le développement, l'apprentissage et les tests de logiciels. Cet article présentera cinq émulateurs Java utiles et pratiques qui peuvent répondre aux besoins de différents utilisateurs et aider les utilisateurs à développer et à exécuter des programmes Java plus efficacement. Le premier émulateur était Eclipse. Écl

Java est un langage de programmation puissant qui permet aux utilisateurs de créer un large éventail d'applications, telles que la création de jeux, la création d'applications Web et la conception de systèmes embarqués. Debian12 est un nouveau système d'exploitation puissant basé sur Linux qui fournit une base stable et fiable pour le développement des applications Java. Avec les systèmes Java et Debian, vous pouvez ouvrir un monde de possibilités et d'innovations qui peuvent certainement beaucoup aider les gens. Cela n'est possible que si Java est installé sur votre système Debian. Dans ce guide, vous apprendrez : Comment installer Java sur Debian12 Comment installer Java sur Debian12 Comment supprimer Java de Debian12

Le framework de tests unitaires JUnit est un outil largement utilisé dont les principaux avantages incluent des tests automatisés, un retour rapide, une qualité de code améliorée et une portabilité. Mais il présente également des limites, notamment une portée limitée, des coûts de maintenance, des dépendances, une consommation de mémoire et un manque de prise en charge d'intégration continue. Pour les tests unitaires d'applications Java, JUnit est un framework puissant qui offre de nombreux avantages, mais ses limites doivent être prises en compte lors de son utilisation.

Problèmes courants et solutions pour les fichiers de configuration log4j Dans le processus de développement d'applications Java, la journalisation est une fonction très importante. Et log4j est un framework de journalisation largement utilisé en Java. Il définit le mode de sortie des journaux via des fichiers de configuration, et il est très pratique de contrôler le niveau et l'emplacement de sortie des journaux. Cependant, vous rencontrerez parfois des problèmes lors de la configuration de log4j. Cet article présentera quelques problèmes courants et leurs solutions, et joindra des exemples de code spécifiques. Problème 1 : le fichier journal ne génère pas de solution :

IDEA (IntelliJIDEA) est un puissant environnement de développement intégré qui peut aider les développeurs à développer diverses applications Java rapidement et efficacement. Dans le développement de projets Java, l'utilisation de Maven comme outil de gestion de projet peut nous aider à mieux gérer les bibliothèques dépendantes, à créer des projets, etc. Cet article détaillera les étapes de base pour créer un projet Maven dans IDEA, tout en fournissant des exemples de code spécifiques. Étape 1 : Ouvrez IDEA et créez un nouveau projet. Ouvrez IntelliJIDEA

Oracle est un fournisseur de systèmes de gestion de bases de données de renommée mondiale et son API (Application Programming Interface) est un outil puissant qui aide les développeurs à interagir et à s'intégrer facilement aux bases de données Oracle. Dans cet article, nous approfondirons le guide d'utilisation de l'API Oracle, montrerons aux lecteurs comment utiliser la technologie d'interface de données pendant le processus de développement et fournirons des exemples de code spécifiques. 1.Oracle

Qu’est-ce que JMX ? JMX (Java Monitoring and Management) est un framework standard qui vous permet de surveiller et de gérer les applications Java et leurs ressources. Il fournit une API unifiée pour accéder et manipuler les métadonnées et les propriétés de performances d'une application. MBean : Management BeanMBean (Management Bean) est le concept central de JMX. Il encapsule une partie de l'application qui peut être surveillée et gérée. Les MBeans ont des propriétés (lisibles ou inscriptibles) et des opérations (méthodes) qui sont utilisées pour accéder à l'état de l'application et effectuer des opérations. MXBean : Extension de gestion BeanMXBean est une extension de MBean, qui fournit des fonctions de surveillance et de gestion plus avancées. Les MXBeans sont définis par la spécification JMX et ont des valeurs prédéfinies

Comment se connecter à la base de données MySQL en utilisant Java ? Quand j'essaye, j'obtiens java.sql.sqlexception:nosuitabledriverfoundforjdbc:mysql://database/tableatjava.sql.drivermanager.getconnection(drivermanager.java:689)atjava.sql.drivermanager.getconnection(drivermanager.java:247) ou