BrowserstackLocal.stop () вешает контейнер Docker - PullRequest
0 голосов
/ 12 мая 2018

Мои тесты Selenium Java выполняются внутри контейнера Docker.Мне нужно использовать BrowserStackLocal, потому что я использую прокси BrowserMob для перехвата и проверки аналитики, отправляемой нашим веб-приложением.Каждый раз, когда внутри Docker вызывается BrowserStackLocal.stop (), он просто зависает.Когда я подключаюсь к этому запущенному контейнеру, я вижу следующее:

# ps -eo pid,ppid,state,cmd | awk '$3=="Z"'
  63     1 Z [BrowserStackLoc] <defunct>

Я столкнулся со следующей проблемой для NodeJS, но, по-видимому, она не была портирована на реализацию Java: https://github.com/browserstack/browserstack-local-nodejs/issues/25

Iя в порядке с обходным решением, но я попробовал следующие комбинации в моем Dockerfile (используя обходной путь от аналогичной проблемы с 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 ().Есть ли обходной путь, который может помочь?

1 Ответ

0 голосов
/ 14 мая 2018

Скорее всего, это проблема, связанная с --init (https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem).

Возможным решением в этом случае было бы использование tini (https://github.com/krallin/tini). Tini (обычно называемый крошечным 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"]

Вы можете изменить команды RUN и CMD в зависимости от ваших требований

...