[英]Xdebug in docker container fails to connect to PhpStorm on Qubes OS
[英]DBeaver / PostgresSQL fails to connect to remote docker container
我正在嘗試通過 DBeaver 訪問 postgresql docker 容器,但我不知道如何使其工作。
運行docker port db_1
返回:
5432/tcp -> 0.0.0.0:5432
所以端口應該對連接開放。
postgresql.conf
設置為
listen_addresses = '*'
運行docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' db_1
返回
172.19.0.2
當嘗試將數據庫連接到localhost
/ 127.0.0.1
/ 172.19.0.2
/ db_1
,Dbeaver 日志返回:
2019-03-18 17:22:03.000 - Connect with 'jdbc:postgresql://db_1:5432/test' (postgres-jdbc-169919c23d5-77ac021a71307fee)
....
2019-03-18 17:22:14.815 - SSH INFO: SSH_MSG_SERVICE_ACCEPT received
2019-03-18 17:22:14.824 - SSH INFO: Authentications that can continue: password,keyboard-interactive
2019-03-18 17:22:14.825 - SSH INFO: Next authentication method: password
2019-03-18 17:22:18.432 - SSH INFO: Authentication succeeded (password).
2019-03-18 17:22:18.458 - Connection failed (postgres-jdbc-169919c23d5-77ac021a71307fee)
2019-03-18 17:22:18.459 - SSH INFO: Disconnecting from domain.com port 22
2019-03-18 17:22:18.461 - SSH INFO: Caught an exception, leaving main loop due to Socket closed
2019-03-18 17:22:18.514 - org.jkiss.dbeaver.model.exec.DBCConnectException: The connection attempt failed.
org.jkiss.dbeaver.model.exec.DBCConnectException: The connection attempt failed.
at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:179)
at org.jkiss.dbeaver.ext.postgresql.model.PostgreDataSource.openConnection(PostgreDataSource.java:363)
at org.jkiss.dbeaver.ext.postgresql.model.PostgreDataSource.initializeRemoteInstance(PostgreDataSource.java:122)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.<init>(JDBCDataSource.java:100)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.<init>(JDBCDataSource.java:89)
at org.jkiss.dbeaver.ext.postgresql.model.PostgreDataSource.<init>(PostgreDataSource.java:80)
at org.jkiss.dbeaver.ext.postgresql.PostgreDataSourceProvider.openDataSource(PostgreDataSourceProvider.java:97)
at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:770)
at org.jkiss.dbeaver.runtime.jobs.ConnectJob.run(ConnectJob.java:70)
at org.jkiss.dbeaver.ui.dialogs.connection.ConnectionWizard$ConnectionTester.run(ConnectionWizard.java:232)
at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:101)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: org.postgresql.util.PSQLException: The connection attempt failed.
at org.postgresql.Driver$ConnectThread.getResult(Driver.java:405)
at org.postgresql.Driver.connect(Driver.java:263)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.lambda$0(JDBCDataSource.java:148)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:157)
... 11 more
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:140)
at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:109)
at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:67)
at org.postgresql.core.PGStream.receiveChar(PGStream.java:306)
at org.postgresql.core.v3.ConnectionFactoryImpl.enableSSL(ConnectionFactoryImpl.java:405)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:94)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
at org.postgresql.Driver.makeConnection(Driver.java:454)
at org.postgresql.Driver.access$100(Driver.java:57)
at org.postgresql.Driver$ConnectThread.run(Driver.java:364)
at java.lang.Thread.run(Thread.java:748)
關於如何使連接工作真的一無所知。 SSH 隧道顯然有效,但與數據庫的連接失敗。 我有一個在另一個容器中運行的 spring 啟動應用程序,並通過連接字符串jdbc:postgresql://db_1:5432/test
連接它就像一個魅力。
對此有任何意見嗎? 難道0.0.0.0
沒有以某種方式映射到內部網絡?
您對此有任何解決方案嗎?
我遇到了同樣的問題,但是我的設置有所不同,我最初在本地(Postgres1)中安裝了Postgres,並在本地設置了服務器,然后有了post-gres的docker映像(Postgres2)。 總共我有2個實例,兩個都配置為偵聽5432端口(后來我意識到了)。
最初,我能夠從DBeaver連接到Postgres1,但不能連接到Postgres2,因為兩者都在同一個端口上。 自從我的項目要求以來,我的意圖是連接到Postgres2。 因此,要解決此問題,我必須轉到服務-> postgresql-x64-12->停止該服務,然后我才能連接到Postgres2,而不是Postgres1。
希望這會有所幫助。
(注:具有postgres和docker的新手,我的評論可能不夠清楚)
你究竟是如何運行你的容器的,我懷疑你可能沒有暴露端口? 因為我只是嘗試在 PS 中使用以下命令運行 postgres 實例:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5433:5432 postgres
將默認的 postgres 容器端口 5432 映射到我本地的 5433 端口(因為我在本地安裝了 postgres 並且不想遇到某種端口干擾問題),然后通過訪問 docker 並運行一些 psql 創建了一個數據庫此答案中描述的命令,然后從 DBeaver 訪問數據庫
一切正常! 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.