当前位置: 首页 > 知识库问答 >
问题:

maven项目无法在docker中构建(toolchains文件不存在)

乔鸿骞
2023-03-14

我为一个网站写了一堆自动测试,并用它们创建了一个docker容器。我正在使用Selenium Grid,所以还有3个用于selenium-hub、chrome和Firefox浏览器实例的容器。起初构建该项目时遇到问题,因为selenium会话无法启动,原因是我认为应用程序容器(带有测试)在Grid和浏览器实例之前就已经构建和运行了。所以我必须编写一个dockerfile,带有健康检查的. sh脚本,它检查Grid是否使用json请求设置,从localhost:4444/status中提取消息,并开始构建测试项目,如果是的话。

这是代码,entrypoint.sh:

#!/bin/bash

cmd="$@"
timeout=30
elapsed=0
printf "\nWaiting timeout: ${timeout} seconds\n\n"
APP_REQUEST="curl -s localhost:4444/status.json | jq '.value.message'"
while [ "$(eval "${APP_REQUEST}")" != '"Selenium Grid ready."' ] && [ ${elapsed} -lt ${timeout} ]; do
  printf "\nWaiting for Selenium Grid to be ready\n"
  sleep 1
  let elapsed++
done
if [ "$(eval "${APP_REQUEST}")" == '"Selenium Grid ready."' ]; then
  printf  "\nSelenium Grid is up and running\n"
  else
      printf  "\nWaiting for Selenium Grid to be up timed out\n"
      exit 1
fi

exec $cmd

然后我为应用程序容器编写了一个dockerfile,并使用该脚本定义了一个入口点。Dockerfile:

FROM maven:3.8.6-amazoncorretto-17
RUN yum install -y curl && yum install jq -y
WORKDIR /usr/src/app
COPY . .
ENTRYPOINT [ "./entrypoint.sh" ]
CMD mvn -test -Dsurefire.suiteXmlFiles=testng.xml -Durl="https://ezochat.com"

然后我编辑了以下docker-compose.yml文件:

version: "3"
services:
  app:
    build:
      context: .
      dockerfile: ./Dockerfile
    depends_on:
      - selenium-hub
    container_name: ezochat-autotest-service
    volumes:
      - ./:/usr/src/app

  chrome:
    image: selenium/node-chrome:4.3.0-20220706
    shm_size: 2gb
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

  firefox:
    image: selenium/node-firefox:4.3.0-20220706
    shm_size: 2gb
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

  selenium-hub:
    image: selenium/hub:4.3.0-20220706
    container_name: selenium-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"

但是当我尝试docker-compose up时,应用容器(带有测试)退出并出现以下错误:

[ERROR] Error executing Maven.
[ERROR] The specified user toolchains file does not exist: /usr/src/app/est

那是什么/usr/src/app/est目录?它没有出现在项目的任何地方,也没有在任何文件中提及。问题是什么?为什么会出现这种错误?有什么方法可以解决?

共有1个答案

萧萧迟
2023-03-14

路径添加在docker compose文件的volumes部分下。您需要检查该路径是否正确。

 类似资料:
  • 我有一个简单的gradle项目,我想建立在Docker容器内 我有一个多级码头建设。第一阶段只是从github克隆项目。第二阶段必须建立项目,所以我可以在最后阶段运行它。但是它失败了 命令<代码>。/gradlew build - stacktrace无法执行并失败,错误为: 和stacktraces: 为什么docker用户没有在工作目录下创建文件的权限,如何添加这些权限?简单的< code >

  • 我无法使用这个IDE Spring工具套件创建新maven项目。它显示了以下错误 CoreException:无法计算生成计划:插件org.apache.maven.plugins:maven-compiler-plugin:3.1或其依赖项之一无法解析:无法读取org.apache.maven的工件描述符。plugins:maven-compiler-plugin:jar:3.1:Artifac

  • 当我试图在eclipse中创建一个Maven项目(选择maven-archetype-quickstart,1.4版)时,我得到以下错误: 无法计算生成计划:插件org.apache.maven。插件:maven-resources-plugin:3.0.2或其依赖项之一无法解析:未能读取org.apache.maven的项目描述符。插件:maven-resources-plugin:3.0.2插

  • 当我使用docker-maven-plugin构建docker映像时,它失败了 错误:无法执行目标com.spotify:docker-maven-plugin:1.0.0:build(default-cli)on project spring-boot-basic:捕获异常:basedir/root/workspace/spring-boot-basic/spring-boot-basic/sp