运行 我的 selenium 客户端代码在 docker 容器中时出现 "PKIX path building failed" 错误

Getting "PKIX path building failed" error while running my selenium client code inside docker container

我正在连接到 selenium 网格以 运行 我的 selenium 测试。使用以下 dockerfile

对客户端代码进行 dockerized
FROM gradle:7.2.0-jdk8
COPY src /home/app/src
COPY build.gradle /home/app
COPY settings.gradle /home/app
COPY Dockerfile /home/app
ADD ssl.crt /usr/local/share/ca-certificates/ssl.crt
RUN update-ca-certificates
WORKDIR /home/app
EXPOSE 80
ENTRYPOINT ["gradle", "--info", "clean", "test","-Denvironment=stagging","-Dtags=envr:stagging","-Dcucumber.options=--tags @envr=stagging" ]

现在,当我 运行 容器时,出现错误“无法访问网格 URL:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException : 无法找到请求目标的有效证书路径。

现在,如果我从我的 java 工作区 运行 使用相同的 gradle 命令 (EntryPoint),一切正常。所以可能是一些我无法理解的网络问题。

问题:

  1. 为什么连接不上hub(Selenium grid)?
  2. 我是否需要客户端图像中的 chromeDriver、Xvnc 等才能 运行 我的测试?

我必须先将crt文件转换成der格式

openssl x509 -in ssl.crt -out ssl.pem
openssl x509 -in ssl.pem -inform pem -out ssl.der -outform der

然后,我通过在我的 dockerfile 中添加以下行解决了这个问题。此外,我必须公开端口 40000,因为我的 zalenium 容器 运行 在端口 40000

FROM gradle:7.2.0-jdk8


COPY src /home/app/src
COPY build.gradle /home/app
COPY settings.gradle /home/app
COPY Dockerfile /home/app
ADD ssl.der /home/app/ssl.der
RUN \
keytool -importcert -alias startssl -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -file /home/app/ssl.der -noprompt
WORKDIR /home/app
EXPOSE 40000
ENTRYPOINT ["gradle", "--info", "clean", "test","-Denvironment=stagging","-Dtags=envr:stagging","-Dcucumber.options=--tags @envr=stagging" ]