在 Docker 中配置 Wildfly,以便 Arquillian 可以部署到它
Configure Wildfly in Docker so that Arquillian can deploy to it
我想在 Docker 容器中的 Wildfly 服务器上创建 运行 Arquillian 测试。
第 1 步:让我们保持简单,将 Docker 排除在外
我编写了部署在 远程 Wildfly 上的 Arquillian 测试。
当我设置一个不变的、空的、独立的 Wildfly 服务器时,Arquillian 部署了测试 + 依赖耳朵,然后它们 运行 没有任何问题。太棒了!
第2步(问题来了):让我们用容器化的Wildfly替换本地的Wildfly
下一步是将 Wildfly 放入 Docker 容器,然后让我的 Arquillian 测试 运行 容器化的 Wildfly。据我所知,我必须确保
- 正确的端口已打开,更具体地说是 8080
- 配置了一个管理员用户,Arquillian 可以使用它来进行部署
我想我做对了。当我 运行 我的 Docker 图片时,
- 我得到一个空的 Wildfly,
- 我可以在 localhost:8080 上找到(欢迎来到 Wildlfly 屏幕)
- 和localhost:9990(管理员控制台,我可以以管理员身份登录)
当我 运行 测试时,我得到
Caused by: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed
很奇怪,因为我可以在浏览器中正常访问管理控制台。
有人看到我的疏漏了吗?我是不是忘记了什么?
Docker-compose.yml
version: '2'
services:
arquillian-cube-wildfly-test:
build: .
ports:
- "8080:8080"
- "9990:9990"
- "8787:8787"
Docker文件
# Base image: Wildfly 10 with 8080 port exposed
FROM jboss/wildfly:10.1.0.Final
# Open management port
EXPOSE 9990
EXPOSE 8787
# Add management user with password
RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent
# Set the default command to run on boot
# This will boot WildFly in the standalone mode and bind to all interface
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
测试项目
查看 https://github.com/stainii/arquillian-cube-and-multiple-deployments-experiment。
这是一个多模块的Maven项目,包含
- first-webapp(虚拟项目,将由测试进行测试)
- second-webapp(虚拟项目,将由测试进行测试)
- 集成测试(包含测试的项目)
给运行这个:
- 转到 src/test/resources/wildfly 启动 Docker 容器,然后执行
docker-compose up
.
- 构建项目并使用
mvn clean dependency:copy-dependencies install
开始测试。将构建 2 个 Web 应用程序,将它们的耳朵复制到测试项目的目标,Arquillian 测试将部署这些耳朵和 运行 测试。
你的项目有两个问题。
1.Wrong 配置 arquillian.xml。检查 https://git.io/vNaYu arquillian.xml
的正确配置
2.You 在您的配置文件中使用旧版本的 arquillian-container arq-widlfly-remote
。应该是
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-remote</artifactId>
<version>2.0.0.Final</version>
<scope>test</scope>
</dependency>
我想在 Docker 容器中的 Wildfly 服务器上创建 运行 Arquillian 测试。
第 1 步:让我们保持简单,将 Docker 排除在外
我编写了部署在 远程 Wildfly 上的 Arquillian 测试。
当我设置一个不变的、空的、独立的 Wildfly 服务器时,Arquillian 部署了测试 + 依赖耳朵,然后它们 运行 没有任何问题。太棒了!
第2步(问题来了):让我们用容器化的Wildfly替换本地的Wildfly
下一步是将 Wildfly 放入 Docker 容器,然后让我的 Arquillian 测试 运行 容器化的 Wildfly。据我所知,我必须确保
- 正确的端口已打开,更具体地说是 8080
- 配置了一个管理员用户,Arquillian 可以使用它来进行部署
我想我做对了。当我 运行 我的 Docker 图片时,
- 我得到一个空的 Wildfly,
- 我可以在 localhost:8080 上找到(欢迎来到 Wildlfly 屏幕)
- 和localhost:9990(管理员控制台,我可以以管理员身份登录)
当我 运行 测试时,我得到
Caused by: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed
很奇怪,因为我可以在浏览器中正常访问管理控制台。
有人看到我的疏漏了吗?我是不是忘记了什么?
Docker-compose.yml
version: '2'
services:
arquillian-cube-wildfly-test:
build: .
ports:
- "8080:8080"
- "9990:9990"
- "8787:8787"
Docker文件
# Base image: Wildfly 10 with 8080 port exposed
FROM jboss/wildfly:10.1.0.Final
# Open management port
EXPOSE 9990
EXPOSE 8787
# Add management user with password
RUN /opt/jboss/wildfly/bin/add-user.sh admin admin --silent
# Set the default command to run on boot
# This will boot WildFly in the standalone mode and bind to all interface
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"]
测试项目
查看 https://github.com/stainii/arquillian-cube-and-multiple-deployments-experiment。 这是一个多模块的Maven项目,包含
- first-webapp(虚拟项目,将由测试进行测试)
- second-webapp(虚拟项目,将由测试进行测试)
- 集成测试(包含测试的项目)
给运行这个:
- 转到 src/test/resources/wildfly 启动 Docker 容器,然后执行
docker-compose up
. - 构建项目并使用
mvn clean dependency:copy-dependencies install
开始测试。将构建 2 个 Web 应用程序,将它们的耳朵复制到测试项目的目标,Arquillian 测试将部署这些耳朵和 运行 测试。
你的项目有两个问题。
1.Wrong 配置 arquillian.xml。检查 https://git.io/vNaYu arquillian.xml
的正确配置2.You 在您的配置文件中使用旧版本的 arquillian-container arq-widlfly-remote
。应该是
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-remote</artifactId>
<version>2.0.0.Final</version>
<scope>test</scope>
</dependency>