BrowserstackLocal.stop()挂起Docker容器
BrowserstackLocal.stop() hangs up the Docker container
我在 Docker 容器中进行了 Selenium Java 测试 运行。我需要使用 BrowserStackLocal,因为我使用 BrowserMob 代理来拦截和检查我们的网络应用程序发送的分析。每次在 Docker 中调用 BrowserStackLocal.stop() - 它只是挂起。
当我连接到这个 运行 容器时,我看到了这个:
# ps -eo pid,ppid,state,cmd | awk '=="Z"'
63 1 Z [BrowserStackLoc] <defunct>
我遇到了 NodeJS 的以下问题,但显然它没有移植到 Java 实现:
https://github.com/browserstack/browserstack-local-nodejs/issues/25
我可以使用解决方法,但我在 Docker 文件中尝试了以下组合(使用与 browserstack-local-nodejs 类似问题的解决方法)无济于事:
CMD ["java", "-cp", "target/.jar", "org.testng.TestNG", "testng.xml"]
CMD ["/bin/bash", "-c", "set -e && java -cp .jar org.testng.TestNG testng.xml"]
唯一有效的方法是评论 browserStackLocal.stop() 调用。
是否有可能有帮助的解决方法?
这很可能是与 --init(https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem) 有关的问题。
在这种情况下可能的解决方案是使用 tini (https://github.com/krallin/tini)。 Tini(通常称为 tiny init)将负责子进程的收割。
这是 docker 中 运行 Tini 的工作示例 docker 文件,应该可以解决您的问题:
FROM node:7.10.0
# Add Tini
ENV TINI_VERSION v0.14.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
WORKDIR /app
COPY package.json /app
RUN ["npm", "install"]
COPY . /app
CMD ["npm", "test"]
您可以根据需要修改 运行 和 CMD 命令
我在 Docker 容器中进行了 Selenium Java 测试 运行。我需要使用 BrowserStackLocal,因为我使用 BrowserMob 代理来拦截和检查我们的网络应用程序发送的分析。每次在 Docker 中调用 BrowserStackLocal.stop() - 它只是挂起。 当我连接到这个 运行 容器时,我看到了这个:
# ps -eo pid,ppid,state,cmd | awk '=="Z"'
63 1 Z [BrowserStackLoc] <defunct>
我遇到了 NodeJS 的以下问题,但显然它没有移植到 Java 实现: https://github.com/browserstack/browserstack-local-nodejs/issues/25
我可以使用解决方法,但我在 Docker 文件中尝试了以下组合(使用与 browserstack-local-nodejs 类似问题的解决方法)无济于事:
CMD ["java", "-cp", "target/.jar", "org.testng.TestNG", "testng.xml"]
CMD ["/bin/bash", "-c", "set -e && java -cp .jar org.testng.TestNG testng.xml"]
唯一有效的方法是评论 browserStackLocal.stop() 调用。 是否有可能有帮助的解决方法?
这很可能是与 --init(https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem) 有关的问题。
在这种情况下可能的解决方案是使用 tini (https://github.com/krallin/tini)。 Tini(通常称为 tiny init)将负责子进程的收割。
这是 docker 中 运行 Tini 的工作示例 docker 文件,应该可以解决您的问题:
FROM node:7.10.0
# Add Tini
ENV TINI_VERSION v0.14.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
WORKDIR /app
COPY package.json /app
RUN ["npm", "install"]
COPY . /app
CMD ["npm", "test"]
您可以根据需要修改 运行 和 CMD 命令