Docker容器鏈接

jopen 9年前發布 | 14K 次閱讀 Docker

部署Java EE 7應用(容器鏈接)

JavaEE 7預構建WAR章節解釋了如何在應用程序服務器中使用內存數據庫。這種方式可以讓你快速的起步,但是很快會遇到瓶頸,因為數據僅存在內存中。這意味著當應 用程序服務器關閉的時候,對數據庫模式和數據的任何更改都會丟失。在這種情況下,你需要使用位于應用程序服務器之外的數據庫服務器。例如,MySQL作為 數據庫服務器,WildFly作為應用程序服務器。

Docker容器鏈接

在同一臺主機上的兩個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.看到如下輸出:

Docker容器鏈接

注意:如果你看到了404錯誤或者其它錯誤,再等一會兒直到容器啟動起來。

讓我們停止前面正在運行的容器:

docker stop mywildfly-mysql
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!