Dockerfile не создает каталоги как root для образа jenkins - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь создать образ докера для jenkins, который автоматизирует настройку сервера.Я хотел бы использовать yaml для моих файлов конфигурации.Для этого мне нужно сделать snakeyaml доступным для заводного винограда.Вот мой файл Docker

FROM jenkins/jenkins:2.107.3

ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false"

USER root

RUN mkdir -p /var/jenkins_home/files
RUN mkdir -p /var/jenkins_home/.groovy/grapes/org.yaml/snakeyaml/jars
RUN chown -R  jenkins:jenkins /var/jenkins_home/files
RUN chown -R  jenkins:jenkins /var/jenkins_home/.groovy/grapes/org.yaml/snakeyaml/jars

USER jenkins

COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt

COPY 03security.groovy /usr/share/jenkins/ref/init.groovy.d/03security.groovy

COPY ivy-1.21.xml /var/jenkins_home/.groovy/grapes/org.yaml/snakeyaml/ivy-1.21.xml
COPY snakeyaml-1.21.jar  /var/jenkins_home/.groovy/grapes/org.yaml/snakeyaml/jars/snakeyaml-1.21.jar
COPY mainConfig.yml /var/jenkins_home/files/mainConfig.yml
COPY 03mainConfig.groovy /usr/share/jenkins/ref/init.groovy.d/03mainConfig.groovy

Не знаю, почему у меня возникает эта проблема, но при запуске сборки я получаю эту ошибку:

chown:не могу получить доступ к '/ var / jenkins_home / files': нет такого файла или каталога

Я выполнил аналогичные команды в других изображениях и не имел этой проблемы, но он не позволяет мне создавать или получать доступэтот файл, и я получаю ту же ошибку, когда исключаю его и пытаюсь использовать только путь .groovy / grapes.

Любая помощь в этом приветствуется.Кроме того, если вы знаете рабочее решение для загрузки snakeyaml (или другой библиотеки) в образ докера jenkins, я бы тоже хотел это увидеть.

1 Ответ

0 голосов
/ 10 мая 2018

Я думаю, это потому, что / var / jenkins_home / - это объем. Если вы запустите команду docker history jenkins / jenkins , вы увидите ее.

<missing>           2 months ago        /bin/sh -c #(nop)  VOLUME [/var/jenkins_home]   0B

Вы можете добавить свои файлы, которые хотите скопировать, в / var / jenkins_home , в direcotry / usr / share / jenkins / ref

COPY *.xml /usr/share/jenkins/ref/

Это означает, что все ваши xml-файлы будут скопированы в / var / jenkins_home после запуска контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...