2016-12-13 4 views
-1

Я использую Docker для запуска автоматического тестирования браузера с помощью nightwatch.jsкоманда Docker не будет работать, если я не открыть интерактивный терминал Баша

Когда я открываю интерактивный терминал работает нормально, например,

docker run -it --rm username/image-name /bin/bash 

, что дает мне Баш подсказку и я бегу:

xvfb-run node nightwatch.js 

и все работает отлично.

Но когда я бегу:

docker run --rm username/image-name xvfb-run node nightwatch.js 

Это просто висит.

В чем разница между открытием терминала bash и ручным запуском тестовой команды и просто запуск тестовой команды напрямую? Неужели они оба должны работать?

+0

Эксплуатация 'node nightwatch.js' может иметь различное значение внутри и снаружи контейнера. При запуске внутри контейнера он может иметь доступ к проекту, но вне контейнера, его совершенно другая область. Вы можете включить его в файл Docker. –

+0

Это все равно поможет использовать опцию '-ti' для' docker run --rm имя_пользователя/image-name xvfb-run node nightwatch.js'? – Yuva

+0

Спасибо за ваши предложения, но добавление опции -ti не помогает. Контейнер имеет доступ к проекту с помощью смонтированного тома, например. -v $ (pwd):/tmp/ – simbro

ответ

0

Хорошо, так что я до сих пор не знаю, что является причиной этой проблемы, но у меня есть обходной путь, который работает достаточно хорошо:

Run Баш как демон:

CONTAINERID=$(docker run -it -d username/image-name /bin/bash) 

Затем использовать докер Exec:

docker exec $CONTAINERID xvfb-run node nightwatch.js 

конечно, вы должны будете сделать некоторые прибирать потом:

docker stop $CONTAINERID 
docker rm $CONTAINERID 

 Смежные вопросы

  • Нет связанных вопросов^_^