[英]JpaRepository not making the connection to the local machine database instead of the docker container database
[英]Access to local database denied through docker container
我將編譯后的Spring-Boot應用程序連接到服務器上另一個容器上運行的數據庫時遇到問題。
我嘗試了不同的配置,將連接從localhost更改為服務器的IP地址。 我還仔細檢查了通過Adminer登錄的憑據是否匹配。 最后,我多次重建了compose和image文件,以確保我具有所有最新版本。
撰寫文件:
version: '3.1'
services:
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: mypassword
MYSQL_DATABASE: marketingappdb
ports:
- "3306:3306"
expose:
- 3306
volumes:
- ./mariadbvolume:/var/lib/mariadb
networks:
- marketingapp
adminer:
image: adminer
restart: always
ports:
- "8086:8080"
expose:
- 8086
depends_on:
- db
networks:
- marketingapp
springserver:
image: marketingapp
restart: always
ports:
- "8091:8091"
expose:
- 8091
depends_on:
- db
networks:
- marketingapp
networks:
marketingapp:
Spring服務器映像:
FROM openjdk:latest
COPY /marketing-app-final.jar .
EXPOSE 8091
ENTRYPOINT ["java", "-jar", "marketing-app-final.jar"]
Spring的應用程序屬性:
server.port = 8091
spring.datasource.url=jdbc:mariadb://0.0.0.0:3306/marketingappdb
spring.datasource.username=root
spring.datasource.password=mypassword
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
我可以使用應用程序從遠程相同的配置(顯然是用IP替換localhost)將PC連接到數據庫,卻看不到為什么我不能在實際的服務器上執行相同的操作。 在此先感謝您的幫助!
使用docker dns將spring應用連接到mariabd:
jdbc:mariadb://db:3306/marketingappdb
其他一些提示:您不需要公開端口3306,您已經將其綁定到主機上的3306(如果您只想從Docker Services中使用它,則根本不需要綁定/公開它) 。 而mariabd永久存儲是var / lib / mysql,而不是var / lib / mariadb
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.