我有一个带postgres的高山Docker,监听地址为“ *”,监听5432,我正在使用
docker run -d --name postgres me/postgres:v1
以及带有oracle jre8的tomcat容器,我将使用以下方法在其上部署我的其余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
我已经尝试过备用方法:我使用以下命令在自己的端口上启动了postgres,
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
和
jdbc:postgresql://localhost:5432/dBName
但似乎都不起作用.
在这两种情况下,我都可以看到我的Web服务器在tomcat管理器中运行,并且可以使用以下命令访问我的dB
psql -h localhost -p 5432 -d dBName -U myUser
以及pgAdmin.
解决任何帮助,不胜感激.
解决方案更新:使用–link时,指向postgres(即您的postgresql容器名称)而不是IP
jdbc:postgresql://postgres:5432/dBName
非常感谢@larsks指出这一点.