В настоящее время мне удалось настроить файл Jenkins для запуска моего PHP-анализа внутри контейнера. Вот его суть:

node {
    stage "Prepare environment"
        checkout scm
        def environment  = docker.build 'platforms-base'

        environment.inside {
            stage "Update Dependencies"
                sh "composer install || true"
        }
}

Когда это запускается, кажется, что репо извлечено на хост-машину, и этот каталог монтируется в контейнер докеров в каталоге /app. (Я не нашел никакой конфигурации для этого, поэтому я не уверен, где это определено.)

В том же контейнере у меня установлен Magento2 в каталоге /var/magento2. Мне нужно запустить несколько тестов в рамках кодовой базы Magento2. Это означает, что мне нужно извлечь текущую ветвь в конкретный каталог в контейнере в /var/magento2/vendor/myorg/mypackage/, но извлеченное репо, похоже, находится в /app.

Как оформить репо в определенном месте внутри контейнера?

0
Mridang Agarwalla 25 Июн 2017 в 10:43

1 ответ

Лучший ответ

/app будет смонтирован внутри вашего контейнера, потому что вы (или используемый вами Dockerfile) монтируете текущий каталог как /app.

Теперь ваш код уже отлично проверен Дженкинсом, поэтому я бы не стал делать отдельную дополнительную проверку внутри контейнера докеров. Дженкинс только что проверил для вас правильную ветку / мастер / тег с соответствующими учетными данными, поэтому нет необходимости делать это самостоятельно.

У вас есть три основных варианта:

  • Смонтировать текущий каталог не как /app, а как /var/magento2/vendor/myorg/mypackage/

  • Смонтируйте текущий каталог как /app, так и /var/magento2/vendor/myorg/mypackage/. Возможно, вы даже могли бы сделать это с помощью дополнительной опции командной строки вместо изменения Dockerfile. (Это очень сильно зависит от вашей настройки разработки).

  • Сделайте /var/magento2/vendor/myorg/mypackage/ символической ссылкой на /app, это, вероятно, тоже сработает.

1
Reinout van Rees 26 Июн 2017 в 11:31