使用最新版本的 Docker,您可以使用 Docker Links、Docker Volume 和 Docker Compose 轻松实现这一目标。来自 Docker 站点的有关这些工具的更多信息。
回到您提到的工作流程:对于任何典型的 Java EE 应用程序,都需要一个应用程序服务器和一个数据库服务器。由于您在帖子中没有提及如何设置数据库,因此我假设您的开发环境将为每个开发人员提供单独的数据库服务器。
考虑到所有这些,我可以建议以下工作流程:
- 从官方镜像构建基础 Wildfly 应用服务器。您可以通过以下方式实现:“docker pull”命令
- 运行基础应用服务器:
docker run -d -it -p 8080:8080 -p 9990:9990 --name baseWildfly
jboss/wildfly
应用程序服务器现在正在运行,您需要对其进行配置以连接到您的数据库服务器,并在必要时配置数据源设置和其他配置以启动您的 Java EE 应用程序。
为此,您需要登录到 Jboss 容器的 bash 终端:
docker exec -i -t baseWildfly /bin/bash/
你现在在集装箱的终端。您可以像在任何 linux 环境中一样配置应用程序服务器。
您可以通过手动将 WAR 文件部署到 Wildfly 来测试配置。正如您所说,这可以使用管理控制台、maven 插件或 ADD 命令轻松完成。我通常用管理控制台来做这件事,只是为了快速测试。当您验证配置工作时,您可以删除 WAR 文件并创建容器的快照:
docker commit --change "添加基本设置和配置"
baseWildfly yourRepository:tag
您现在可以将创建的图像推送到您的私有存储库并与您的开发团队共享。他们现在可以拉取镜像并立即运行应用服务器进行部署。
我们不想使用管理控制台为每个 Maven 构建部署 WAR 文件,因为这太麻烦了,所以下一个任务是使用 Docker Volume 自动化它。
假设您已配置 Maven 将 WAR 文件构建到“../your_project/deployments/”,您可以将其链接到 Jboss 容器的部署目录,如下所示:
docker run -d -p 8080:8080 -v
../your_project/deployments:/opt/jboss/wildfly/standalone/deployments
现在,每次您使用 Maven 重建应用程序时,应用程序服务器都会扫描更改并重新部署您的 WAR 文件。
给每个开发者单独的数据库服务器也是很成问题的,因为他们必须在容器中自己配置它,因为他们可能有不同的设置(例如数据库的 url、用户名、密码等)。所以,最终将其 dockerize 是件好事。
假设您使用 Postgres 作为您的数据库服务器,您可以从 postgres 官方存储库中提取它。准备好镜像后,就可以运行数据库服务器了:
docker run -d -p 5432:5432 -t --name postgresDB postgres
或使用链接的“数据”目录运行数据库服务器:
docker run -d -p 5432:5432 -v
../your_postgres/data:/var/lib/postgresql -t --name postgresDB
postgres
第一个命令会将您的数据保存在容器中,而后一个命令会将您的数据保存在主机环境中。
现在您可以将数据库容器与 Wildfly 链接:
docker run -d -p 8080:8080 --link postgresDB:database -t baseWildfly
以下是链接的输出:
现在您可以为开发人员团队中的所有成员提供相同的环境,他们可以用最少的设置开始编码。
生产环境也可以使用相同的基础镜像,所以每当你想发布新版本时,你只需要将WAR文件复制到主机的“your_deployment”文件夹中。
将应用服务器和数据库服务器 docker 化的好处是,您可以在未来轻松地将其集群化以扩展它或应用高可用性。