我有一个带有 postgres 的 alpine 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
and
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 指出这一点。