簡體   English   中英

Docker Tomcat容器無法訪問Postgres容器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM