2015-04-17 5 views
1

Недавно мы подключили нашу систему к Docker. Это связано с несколькими контейнерами: один для приложения, один для mysql и т. Д. Однако теперь я столкнулся с проблемой, о которой я не думал, прежде чем начать :)Как проверить внешние сервисы внутри контейнера Docker?

У нас есть ряд тестов интеграции системного уровня, которые предназначены для тестирования взаимодействия с внешними службами. Выполнение таких действий, как остановка redis, выдача запроса, проверка правильности реакции системы, а затем перезапуск redis и обеспечение правильного повторного подключения. Раньше это было довольно просто:

subprocess.call('service redis stop') 

например. Но теперь ... контейнер приложения с нашим кодом python не имеет никакого контроля над внешним сервером, где живет redis. Есть ли у кого-нибудь идеи по наилучшему способу адаптации существующих тестов для правильной работы в новой среде?

ответ

1

Вы можете выполнить тесты на хосте и использовать команды docker для запуска и остановки контейнеров, содержащих службы, которые вы хотите включить/отключить.

Если вы хотите получить фантазию, вы можете создать контейнер, который монтирует доклерский unix-сокет внутри, чтобы вы могли разговаривать с докером на хосте. Это, по сути, дает root-доступ к хосту этого контейнера, поэтому будьте осторожны, если вы поедете по этому маршруту.

+0

Это оказалось правильным решением. В копии нашего контейнера приложений мы установили гнездо док-станции и двоичные файлы, а затем перезаписали команды типа «service stop redis», чтобы больше походить на «docker stop redis». Благодаря! –

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