Docker容器鏈接
部署Java EE 7應用(容器鏈接)
JavaEE 7預構建WAR章節解釋了如何在應用程序服務器中使用內存數據庫。這種方式可以讓你快速的起步,但是很快會遇到瓶頸,因為數據僅存在內存中。這意味著當應 用程序服務器關閉的時候,對數據庫模式和數據的任何更改都會丟失。在這種情況下,你需要使用位于應用程序服務器之外的數據庫服務器。例如,MySQL作為 數據庫服務器,WildFly作為應用程序服務器。
在同一臺主機上的兩個Docker容器
這部分將展示如何通過網絡端口使用 Docker容器鏈接 技術連接運行在Docker容器內的一項服務。
1.如下啟動MySQL服務器:
From Internet
docker run --name mysqldb -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_DATABASE=sample -e MYSQL_ROOT_PASSWORD=supersecret -p 3306:3306 -d mysql
From Instructor
docker run --name mysqldb -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_DATABASE=sample -e MYSQL_ROOT_PASSWORD=supersecret -p 3306:3306 -d classroom.example.com:5000/mysql
-e定義了數據庫在啟動讀取的環境變量,允許我們使用用戶名和密碼訪問數據庫。
2.如下啟動部署了Java EE 7應用的WildFly:
From Internet
docker run -d --name mywildfly-mysql --link mysqldb:db -p 8080:8080 arungupta/wildfly-mysql-javaee7
From Instructor
docker run -d --name mywildfly-mysql --link mysqldb:db -p 8080:8080 classroom.example.com:5000/wildfly-mysql-javaee7
--link帶有兩參數 - 第一個參數好似我們要連接的容器名,第二個參數是連接名的別名。
3.容器鏈接
注意
在兩個容器之間創建的連接是在源容器和目標容器之間建立了管道,安全的把源容器的信息傳遞到目標容器中。
在我們這種情況,目標容器(WildFly)可以看到源容器(MySQL)中的信息。當容器連接起來后,源容器中的信息可以發送到接收容器中。這允許接收容器看見描述源容器的數據中暴露出來的部分數據。例如,MySQL數據庫的IP地址暴露在了 $DB_PORT_3306_TCP_ADDR ,MySQL數據庫的端口暴露在了 $DB_PORT_3306_TCP_PORT 。這些信息被用于創建JDBC連接資源。
關于容器之間通信的更多信息,參考Docker站點上的 把容器連接在一起
4.看到如下輸出:
注意:如果你看到了404錯誤或者其它錯誤,再等一會兒直到容器啟動起來。
讓我們停止前面正在運行的容器:
docker stop mywildfly-mysql