В настоящее время в Travis-CI я должен запустить docker-compose с -d, чтобы он не блокировал процесс сборки. К сожалению, это означает, что мне нужен какой-то способ убедиться, что мои контейнеры работают, прежде чем приступить к тестированию. Лучший способ сделать это - использовать sleep.

Помимо использования CI Docker (который воняет IMO), есть ли у кого-нибудь какие-либо рекомендации о том, как этого добиться?

В настоящее время я использую:

  - docker-compose up -d
  - sleep 6
3
Webnet 29 Май 2017 в 06:32

2 ответа

Лучший ответ

Нечто простое:

- docker-compose up -d
- while true; do echo Checking...; echo $(docker-compose exec service_name test-command something) | grep -q some-output && break; sleep 0.5; done ; 

Или лучше вызвать скрипт, который делает это лучше отформатированным (вам нужно создать /health-check.sh ):

- docker-compose up -d
- while true; do echo Checking...; (docker-compose exec service_name /health-check.sh) && break; sleep 0.5; done ; 

< EM> /health_check.sh :

#!/bin/bash

curl http://localhost:PORT && exit 0
exit 1
3
Robert 30 Май 2017 в 18:47

docker-compose ps показывает состояние контейнеров, которое должно быть вверх, если все прошло нормально.

0
Ricardo Branco 29 Май 2017 в 05:25