как скопировать файл из контейнера docker в Jenkins - PullRequest
0 голосов
/ 10 марта 2020

Я новичок в строительстве и эксплуатации докеров. Итак, у меня есть настройка конвейера jenkins, где у меня есть этап, на котором запускается файл python. Я создал docker для запуска этого python файла. Используя команды

    sh "docker build -f create-abc-Dockerfile -t create-abc ."
    sh "docker run create-abc python create-abc.py $name $abc ${abcDescription}"
    getDetails = sh(returnStdout: true, script: "cat abc_details").trim()

, где create-ab c -Dockerfile - это мой docker файл и create-ab c .py мой файл python create-ab c -Dockerfile содержит

     FROM python:3.8-alpine3.10
     COPY create-abc.py .
     RUN pip install requests
     CMD ["python", "create-abc.py"]

Мой python файл выполняет некоторое действие - вызывает API и некоторые части ответа в файле "xyz_details"

. Выше часть кода в конвейере Jenkins работает правильно, вызывая мой python файл, выполняющий API, но он не может получить доступ к файлу xyz_details. Это говорит, что файл не найден.

Я прочитал пару постов и попробовал несколько методов

  1. Вместо запуска сборки я изменил CMD на RUN в docker - но мой файл python был парамеризован и он передает значения Dynami c. Таким образом, этот метод не работает для меня
  2. Попробовал этот метод
    docker cp <containerId>:/file/path/within/container /host/path/target

Мой код:

    sh "docker cp create-abc:/xyz_details ."

где create-rf c мой контейнер (я использую имя тега, приведенное выше при создании docker), но я получаю следующую ошибку

    + docker cp create-abc:/xyz_details .
     Error: No such container:path: create-abc:/xyz_details

Все, что я хочу сделать, это запустить файл python, записать результат в xyz_details, прочитайте этот файл xyz_details снова в конвейере Jenkins.

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Вот так я копирую файл из docker контейнера в локальный jenkins по конвейеру

  sh """
          docker cp  container_name:/app/test-reports ./test-reports
     """
0 голосов
/ 10 марта 2020

Вы можете попробовать использовать тома. В основном вам нужно запустить контейнер docker и присоединить том к пути назначения (где будут сгенерированы файлы). и тогда у вас будет доступ к файлам с хост-машины.

sh "docker run -v $PWD/myfiles:/dir/path/within/container create-abc python create-abc.py $name $abc ${abcDescription}"
sh "cp -r $PWD/myfiles /to/path"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...