, если http://localhost:8080/health
указывает на то, что тесты готовы к запуску, вы можете подождать, пока тест завершится успешно, прежде чем продолжить. Было бы естественно выполнить docker -compose и mvn из оболочки, поэтому я предоставлю bash здесь.
wait_for_health() {
for i in $(seq 1 5); do
if curl -s 'http://localhost:8080/health'; then return 0; fi
sleep 2
done
echo "localhost was never ready"
exit 1
}
wait_for_health
, если вы думаете об очистке, bash может запустить команда при выходе, может быть что-то вроде:
trap "docker-compose down" EXIT
Наконец, не забудьте запустить ваши сценарии с установленным -e
. Вы можете поместить его в shebang #!/bin/bash -e
или set -e
, но если вы не установите -e
, сбойные команды, нелогично, не вызовут сбой скрипта. Обычно это не то, что вы хотите.
В качестве альтернативы вы можете запустить mvn
из docker -compose. Вам придется описать свою среду maven и вспомогательные компоненты в docker, но затем вы можете добавить контейнер, который зависит от веб-контейнера. Из того, что я могу сказать, вам решать, как не выполнять mvn
локально в этом случае ( Можете ли вы определить дополнительные docker -композитные сервисы? выглядит так хорошее начало), но это может помочь вам обработать зависимости контейнера.