在Docker中配置Wildfly,以便Arquillian可以部署到它

时间:2018-01-20 17:35:29

标签: docker wildfly jboss-arquillian

我想创建在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

很奇怪,因为我可以在浏览器中访问管理控制台。

有人看到我的疏忽吗?我忘了什么吗?

多克尔-compose.yml

version: '2'
services:
  arquillian-cube-wildfly-test:
    build: .
    ports:
      - "8080:8080"
      - "9990:9990"
      - "8787:8787"

Dockerfile

# 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(虚拟项目,将通过测试进行测试)
  • 集成测试(包含测试的项目)

运行此:

  1. 转到src / test / resources / wildfly启动Docker容器,然后执行docker-compose up
  2. 构建项目并使用mvn clean dependency:copy-dependencies install开始测试。将构建2个webapps,将他们的耳朵复制到测试项目的目标,Arquillian测试将部署这些耳朵并运行测试。

1 个答案:

答案 0 :(得分:2)

您的项目有两个问题。

1. arquillian.xml中的配置错误。检查https://git.io/vNaYu以获取arquillian.xml的正确配置

2.您在个人资料arq-widlfly-remote中使用旧版本的arquillian-container。它应该是

<dependency>
  <groupId>org.wildfly.arquillian</groupId>
  <artifactId>wildfly-arquillian-container-remote</artifactId>
  <version>2.0.0.Final</version>
  <scope>test</scope>
</dependency>