我有一个带有Postgres的阿尔卑斯Docker,监听地址为“*”,并且正在侦听5432端口,我正在使用它进行部署。
我的Tomcat容器使用Oracle JRE8,我在其中部署了我的REST Web服务,使用以下内容:
"并且部署它使用"
这两个程序都在我的笔记本电脑上执行,IP地址为192.168.x.x,并且我检查了端口是否正在监听。
不幸的是,我的Tomcat Web服务无法使用Postgres服务连接。
然后使用。
但是似乎两者都不起作用。
在这两种情况下,我都能看到我的Web服务器在Tomcat管理器中运行,并且我能够访问我的数据库。
以及pgAdmin。
任何对解决此问题的帮助都将不胜感激。
解决方案更新:在使用 --link 时,指向 postgres(即您的 PostgreSQL 容器名称)而不是 IP。
非常感谢 @larsks 指出这一点。
docker run -d --name postgres me/postgres:v1
我的Tomcat容器使用Oracle JRE8,我在其中部署了我的REST Web服务,使用以下内容:
# Set environment
ENV CATALINA_HOME /opt/tomcat
EXPOSE 8080
# Launch Tomcat on startup
CMD ${CATALINA_HOME}/bin/catalina.sh run
RUN rm -rf ${CATALINA_HOME}/webapps/docs \
${CATALINA_HOME}/webapps/examples \
${CATALINA_HOME}/webapps/ROOT
# Deploying war file
ADD myapp.war ${CATALINA_HOME}/webapps/ROOT.war
# Restarting server after deploying
CMD ${CATALINA_HOME}/bin/catalina.sh run
"并且部署它使用"
docker run -d -p 8080:8080 --name tomcat --link postgres:postgres me/tomcat:v1
这两个程序都在我的笔记本电脑上执行,IP地址为192.168.x.x,并且我检查了端口是否正在监听。
不幸的是,我的Tomcat Web服务无法使用Postgres服务连接。
jdbc:postgresql://192.168.x.x:5432/dBName
我已经尝试的另一种方法: 我使用以下方式在独立端口上启动了PostgreSQL:
docker run -d -p 5432:5432 --name postgres me/postgres:v1
docker run -d -p 8080:8080 --name tomcat me/tomcat:v1
然后使用。
jdbc:postgresql://192.168.x.x:5432/dBName
and
jdbc:postgresql://localhost:5432/dBName
但是似乎两者都不起作用。
在这两种情况下,我都能看到我的Web服务器在Tomcat管理器中运行,并且我能够访问我的数据库。
psql -h localhost -p 5432 -d dBName -U myUser
以及pgAdmin。
任何对解决此问题的帮助都将不胜感激。
解决方案更新:在使用 --link 时,指向 postgres(即您的 PostgreSQL 容器名称)而不是 IP。
jdbc:postgresql://postgres:5432/dBName
非常感谢 @larsks 指出这一点。
--link
,为什么您的 JDBC URL 中有一个 IP 地址?只需使用链接的主机名postgres
,它将解析为正确的 IP 地址。很少有可能 192.168.anything 实际上是 postgres 容器的地址。 - larsks