Dockerfile не удалось изменить доступ пользователя - PullRequest
1 голос
/ 08 января 2020

Я хочу запустить jenkins на docker и изменить доступ пользователя, чтобы можно было прочитать клавишу S SH и получить доступ к git. Вот пример файла dockerfile

FROM jenkins/jenkins:lts

USER root 

COPY --chown=jenkins:jenkins id_rsa $JENKINS_HOME/.ssh/id_rsa
COPY --chown=jenkins:jenkins id_rsa.pub $JENKINS_HOME/.ssh/id_rsa.pub
RUN /bin/bash -c 'ls -la $JENKINS_HOME/.ssh; chmod 600 -R $JENKINS_HOME/.ssh; ls -la $JENKINS_HOME/.ssh'

Вывод после сборки успешен, доступ был изменен!

Step 3/3 : RUN /bin/bash -c 'ls -la $JENKINS_HOME/.ssh; chmod 600 -R $JENKINS_HOME/.ssh; ls -la $JENKINS_HOME/.ssh'
 ---> Running in 137d1a4f9f6d
total 16
drwxr-xr-x 2 jenkins jenkins 4096 Jan  8 04:11 .
drwxr-xr-x 3 jenkins jenkins 4096 Jan  8 04:11 ..
-rwxr-xr-x 1 jenkins jenkins 1843 Jan  2 02:33 id_rsa
-rwxr-xr-x 1 jenkins jenkins  413 Jan  2 02:33 id_rsa.pub
total 16
drw------- 2 jenkins jenkins 4096 Jan  8 04:11 .
drwxr-xr-x 3 jenkins jenkins 4096 Jan  8 04:11 ..
-rw------- 1 jenkins jenkins 1843 Jan  2 02:33 id_rsa
-rw------- 1 jenkins jenkins  413 Jan  2 02:33 id_rsa.pub
Removing intermediate container 137d1a4f9f6d
 ---> 7d6334d2b044

Однако, когда я go внутри /bin/bash доступа по умолчанию, chmod не работал

jenkins@f49048ec8c88:/$ ls -al /var/jenkins_home/.ssh/
total 16
drwxr-xr-x  2 jenkins jenkins 4096 Jan  8 04:25 .
drwxr-xr-x 16 jenkins jenkins 4096 Jan  8 04:26 ..
-rwxr-xr-x  1 jenkins jenkins 1843 Jan  2 02:33 id_rsa
-rwxr-xr-x  1 jenkins jenkins  413 Jan  2 02:33 id_rsa.pub

есть идеи, почему такое поведение?

Ответы [ 2 ]

3 голосов
/ 08 января 2020

Это произошло потому, что $JENKINS_HOME определяется как VOLUME в jenkins:lts базовом изображении. Это можно обойти любым из 3 способов:

  1. Вы можете исправить разрешения на хост-машине перед сборкой, и она должна работать.

  2. Вы Можно использовать многоэтапную сборку, изменять разрешения и копировать файлы с первого этапа

FROM jenkins/jenkins:lts as base
USER root
COPY --chown=jenkins:jenkins id_rsa /tmp/ssh_keys/
COPY --chown=jenkins:jenkins id_rsa.pub  /tmp/ssh_keys/
RUN chmod 600 -R /tmp/ssh_keys

FROM jenkins/jenkins:lts
USER root
COPY --chown=jenkins:jenkins --from=base /tmp/ssh_keys $JENKINS_HOME/.ssh
Вы можете копировать и изменять разрешения файлов во временном каталоге как часть сборки. Как часть вашего сценария запуска (точки входа) вы можете скопировать их из временного каталога в действительный каталог.
0 голосов
/ 08 января 2020

Поскольку команда / bin / bash предназначена только для этого сеанса. Если вы хотите, чтобы он был постоянным, поместите его в .profile.

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