我为一个网站写了一堆自动测试,并用它们创建了一个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目录?它没有出现在项目的任何地方,也没有在任何文件中提及。问题是什么?为什么会出现这种错误?有什么方法可以解决?
路径添加在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