在 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。据我所知,我必须确保

我想我做对了。当我 运行 我的 Docker 图片时,

当我 运行 测试时,我得到

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项目,包含

给运行这个:

  1. 转到 src/test/resources/wildfly 启动 Docker 容器,然后执行 docker-compose up.
  2. 构建项目并使用 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>