Как установить пользовательский контекст для docker.сборка в jenkinsfile

Я пытаюсь адаптировать сборку докера для Дженкинса. Я следую за нашим файлом docker-compose и создаю файл Jenkinsfile, который создает каждый контейнер и связывает их вместе. Проблема, с которой я сталкиваюсь, заключается в том, что файлы docker-compose объявляют контекст, в котором нет файла Dockerfile. Насколько я понимаю, Дженкинс установит контекст, где находится Dockerfile, который помещает файлы для копирования в другое относительное местоположение в зависимости от того, является ли jenkinsfile или docker-compose файл строится.

структура папок:

workspace
    |-docker
        |-db
           |-Dockerfile
           |-entrypoint.sh

вот как Dockerfile объявляет инструкцию копирования для рассматриваемого файла

COPY docker/db/entrypoint.sh /

вот как мой jenkinsfile строит файл. Который, насколько мне известно, помещает контекст в этот каталог

docker.build("db", "${WORKSPACE}/docker/db")

файл docker-compose объявляет его следующим образом:

db:
build:
  context: .
  dockerfile: docker/db/Dockerfile

который помещает контекст в корень проекта.

есть ли способ скажите файлу jenkinsfile использовать тот же контекст, что и файл docker-compose, чтобы инструкция копирования файла Dockerfile оставалась неизменной и действительной как для Jenkins, так и для docker-compose? Если это невозможно, кто-нибудь знает какие-либо альтернативные решения?

3 ответов


оказывается, я вытаскивал предыдущую версию (1.6) плагина docker-pipeline -. С тех пор данная функция была обновлена (1.7), чтобы позволить второму параметру назначить местоположение Dockerfile вне контекста.

обновленный оператор в моем файле Jenkinsfile:

return docker.build("db", "-f docker/db/Dockerfile .")

и это позволяет моему контейнеру создавать без изменения ожидаемого контекста docker-compose или Dockerfiles разработчика.


просто Omnit в context пункта docker-compose поэтому по умолчанию используется расположение файла Dockerfile.


следующий синтаксис должен работать: докер.сборка ('ContainerTag" - F контекст DockerFilePath' пример: docker.строить ('quay.io / AppContianer: 1.0.0' ' - f dockerfileDir / Dockerfile.тест dockerfileDir')