Как установить пользовательский контекст для 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')