[英]connection refused postgres docker
我使用spring-boot,spring jpa數據制作了一個小型應用程序,該應用程序連接到dockerized的postgres實例,即使我嘗試通過“ psql”連接到dockerized的postgres實例,它也能正常工作。 問題是當我嘗試對我的spring-boot應用程序的映像實例進行泊塢化,並嘗試將其與dockerized postegres實例鏈接時。 我使用的docker命令是這樣
docker run -it --link mypgcontainerwithpwd:postgres --name postgresclient1 sprinbootjpa
正如我已經提到的,容器mypgcontainerwithpwd正在運行,並且可以通過本地應用程序通過psql訪問
psql -p 5555 postgres postgres
在罐子中,我將執行application.properties文件,如下所示
spring.datasource.url=jdbc:postgresql://localhost:5555/postgres
spring.datasource.username=postgres
spring.datasource.password=password
spring.jpa.generate-ddl=true
在開始階段,將引發一個異常並打印: connection refused localhost-> 5555
構建實例的dockerfile看起來像這樣
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD ./SpringJPA-PostgreSQ-0.0.1.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
我是Docker的新手,但找不到任何可解決此問題的東西,我正在Windows 10上使用Unix容器運行docker。
謝謝大家。
在屬性文件中,您指出postgres與Spring Boot應用程序(localhost)在同一容器中運行,但事實並非如此,因為它在其他容器中運行。
以此替換您的財產:
spring.datasource.url=jdbc:postgresql://postgres:5555/postgres
您還可以指向docker bridge ip,通常為172.17.0.1。
變更-
spring.datasource.url=jdbc:postgresql://localhost:5555/postgres
至
spring.datasource.url=jdbc:postgresql://postgres:5555/postgres
自從您使用鏈接--link mypgcontainerwithpwd:postgres
啟動客戶端容器以來,這意味着您的客戶端將能夠使用別名postgres
來訪問mypgcontainerwithpwd
容器。 localhost
意味着您的客戶端容器本身,而不是mypgcontainerwithpwd
。
這行得通,但我只想強調Vivek的觀點,即“ postgres”來自容器名稱,而不是用戶ID或數據庫類型。 我正在使用Docker Compose,所以這個名字來自我的docker-compose.yml文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.