[英]Docker Tomcat container unable to access Postgres container
我有一個帶有postgres的高山碼頭,聽地址'*'並聽5432,我正在部署
docker run -d --name postgres me/postgres:v1
和我的tomcat容器與oracle jre8,我正在使用以下部署我的其余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.xx,我檢查了端口正在偵聽。
不幸的是我在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指出它。
使用--link時,指向postgres(即你的postgresql容器名稱)而不是IP
jdbc:postgresql://postgres:5432/dBName
因此,對於完整的解決方案,請運行postgresql和tomcat容器
docker run -d --name postgres me/postgresql:v1
docker run -d -p 8080:8080 --name tomcat --link postgres:postgres me/tomcat:v1
(注意這里我沒有為postgres容器添加端口,因為它已經在內部暴露了5432,除非你想從你的主機外部命中它,你不需要在這里指定一個端口)
並且您的服務器war文件將是上面的jdbc地址,postgres將在鏈接時自動解析為容器的IP地址。
非常感謝@larsks指出它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.