我試圖將運行在Apache Tomcat容器中的Web服務器連接到運行其他容器的MySQL數據庫。爲了做到這一點,我使用了Docker的鏈接機制。Docker - 將Apache Tomcat Web服務器連接到MySQL服務器
docker run -it --name ${CONTAINER_NAME} --link db:db -p 8080:8080 -d tomcat
運行容器後,我可以看到容器已鏈接並且環境變量已正確顯示。
爲了連接是在Tomcat容器到數據庫中運行Web應用程序中,我使用下面的配置文件:
<Context>
<Resource
name="jdbc/MYDB"
type="javax.sql.DataSource"
auth="Container"
username="user"
password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://${DB_PORT_3306_TCP_ADDR}:${DB_PORT_3306_TCP_PORT}/epcis?autoReconnect=true">
</Resource>
</Context>
現在的問題是,我無法建立連接因爲Docker公開的環境變量在Tomcat環境中無法識別。
有一種方法可以讓Docker公開的這些環境變量對Apache Tomcat環境可見嗎?
檢查mysql容器是否暴露3306端口。然後您可以輸入容器並使用例如telnet查看容器是否可以相互通話。 – wsl 2015-04-01 11:11:57
他們可以互相交談,我確認使用telnet。問題是JDBC驅動程序不知道$ {DB_PORT_3306_TCP_ADDR}和其他env變量的值。該錯誤在我的web應用程序的tomcat日誌中報告。 – 2015-04-01 11:23:27
你可以使用env屬性傳遞環境變量:https://docs.docker.com/reference/run/#env-environment-variables – wsl 2015-04-01 11:25:27