0

我正在连接到硒网格来运行我的硒测试。使用以下 dockerfile 对客户端代码进行 docker 化

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. 为什么它不连接集线器(Selenium 网格)?
  2. 我是否需要客户端映像中的 chromeDriver、Xvnc 等来运行我的测试?
4

1 回答 1

1

我必须先将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" ]
于 2021-10-15T07:58:40.133 回答