第6章 部署Java EE 7应用(容器链接)


JavaEE 7预构建WAR章节解释了如何在应用程序服务器中使用内存数据库。这种方式可以让你快速的起步,但是很快会遇到瓶颈,因为数据仅存在内存中。这意味着当应用程序服务器关闭的时候,对数据库模式和数据的任何更改都会丢失。在这种情况下,你需要使用位于应用程序服务器之外的数据库服务器。例如,MySQL作为数据库服务器,WildFly作为应用程序服务器。
javaee7-hol-container-linking.png

图9 在同一台主机上的两个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.看到如下输出:
javaee-2.png


注意:如果你看到了404错误或者其它错误,再等一会儿直到容器启动起来。
让我们停止前面正在运行的容器:
docker stop mywildfly-mysql

1 个评论

OneAPM 可以智能探知 Java 应用之间的相互调用关系,通过串联复杂的后台组件,动态生成 J2EE 应用整体架构视图。在图中通过简单的点击钻取您可以逐级深入,查看对代码级别的诊断数据。快来官网注册使用吧~

要回复文章请先登录注册