Запустите тестирование приложений из нескольких контейнеров в процессе CI - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть приложение Laravel, у которого есть несколько интеграционных тестов, и этот проект Dockerized использует Docker Compose, и он состоит из 5 контейнеров: php-fpm, mysql, redis, nginx и workspace, которые имеютphp-cli и composer установлены сами по себе (точно так же, как Laradock ).Я хочу запустить тесты, пока test stage работает в моем процессе CI.Я должен упомянуть, что моим CI-сервером является GitLab CI.

По сути, я запускаю тесты в своей локальной системе, выполняя следующие команды в моем терминале:

$ docker-compose up -d
Creating network "docker_backend" with driver "bridge"
Creating network "docker_frontend" with driver "bridge"
Creating redis     ... done
Creating workspace ... done
Creating mysql     ... done
Creating php-fpm   ... done
Creating nginx     ... done

$ docker-compose exec workspace bash
// now, I have logged in to workspace container

$ cd /var/www/app
$ phpunit
PHPUnit 6.5.13 by Sebastian Bergmann and contributors.

........                                                            8 / 8 (100%)

Time: 38.1 seconds, Memory: 28.00MB

OK (8 tests, 56 assertions)

Вот мой вопрос: Как я могу запустить эти тесты на стадии тестирования, когда нет запущенного контейнера?Каковы лучшие практики в этом случае?

Я также следовал этой документации по GitLab , но кажется, что не стоит использовать Docker-in-Docker или Docker SocketBinding.

1 Ответ

0 голосов
/ 02 февраля 2019

Во-первых, абсолютно нормально запускать docker-in-docker с gitlab ci.Это отличный способ, если вы не хотите или вам не нужно погружаться в kubernetes.Совместное использование док-сокета, конечно, каким-то образом снижает уровень изоляции, но поскольку вы в основном выполняете свои задания на своих VPS-контейнерах, я лично не считаю эту проблему критической.

Я отвечал на аналогичный вопрос некоторое время назад в это сообщение.

...