Я новичок в строительстве и эксплуатации докеров. Итак, у меня есть настройка конвейера 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. Это говорит, что файл не найден.
Я прочитал пару постов и попробовал несколько методов
- Вместо запуска сборки я изменил CMD на RUN в docker - но мой файл python был парамеризован и он передает значения Dynami c. Таким образом, этот метод не работает для меня
- Попробовал этот метод
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.