首页 > 解决方案 > scripts not executing in jenkins in docker

问题描述

I am setting up docker for jenkins and installing plugins in it.For this execution there are few lines as below in Dockerfile:

COPY plugins.sh /usr/local/bin/plugins.sh
# Adding required plugins
COPY plugins.txt /plugins.txt
RUN cd /usr/local/bin && ls -al && echo 'Hello'
RUN /usr/local/bin/plugins.sh /plugins.txt

it is giving output as:

Step 64/73 : RUN cd /usr/local/bin && ls -al && echo 'Hello'
 ---> Running in 99b837dbd42c
total 53068
drwxr-xr-x 1 root root     4096 Jun 14 12:06 .
drwxr-xr-x 1 root root     4096 Jan  9 19:37 ..
-rwxr-xr-x 1 root root       87 Jun  6 01:55 docker-java-home
-rw-rw-r-- 1 root root     5000 Jun 11 07:00 jenkins-support
-rw-rw-r-- 1 root root     1301 Jun 11 07:00 jenkins.sh
-rwxrwxrwx 1 root root 54308597 Jun  6 10:56 kubectl
-rw-rw-r-- 1 root root     3917 Jun 11 07:00 plugins.sh
Hello
Removing intermediate container 99b837dbd42c
 ---> bfa6a11b18da
Step 65/73 : RUN /usr/local/bin/plugins.sh /plugins.txt
 ---> Running in fd2f5cf8de36
/bin/sh: /usr/local/bin/plugins.sh: Permission denied

It is evident that permission is not there for executing the script so,I have added this too in second line:

COPY plugins.sh /usr/local/bin/plugins.sh
RUN chmod +x /usr/local/bin/plugins.sh 
# Adding required plugins
COPY plugins.txt /plugins.txt
RUN cd /usr/local/bin && ls -al && echo 'Hello'
RUN /usr/local/bin/plugins.sh /plugins.txt

It is again giving me error as:

Step 63/74 : RUN chmod +x /usr/local/bin/plugins.sh
 ---> Running in 375d0c56e9c3
chmod: changing permissions of '/usr/local/bin/plugins.sh': Operation not permitted
The command '/bin/sh -c chmod +x /usr/local/bin/plugins.sh' returned a non-zero code: 1

标签: dockerjenkins

解决方案


这是一个小错误,但它给了一个重要的教训:

在执行 Dockerfile 时,对于我们从本地复制到 docker 容器的所有文件,权限将始终保持不变并且无法更改。

主机上的权限:

-rw-rw-r--  1 sevenos sevenos 1301 Jun 11 12:30 jenkins.sh
-rw-rw-r--  1 sevenos sevenos 3917 Jun 11 12:30 plugins.sh
-rw-rw-r--  1 sevenos sevenos  806 Jun 11 12:30 plugins.txt

Docker 中的权限:

Step 64/73 : RUN cd /usr/local/bin && ls -al && echo 'Hi'
 ---> Running in 71c1dff30ffc
total 53068
drwxr-xr-x 1 root root     4096 Jun 14 12:06 .
drwxr-xr-x 1 root root     4096 Jan  9 19:37 ..
-rwxr-xr-x 1 root root       87 Jun  6 01:55 docker-java-home
-rw-rw-r-- 1 root root     5000 Jun 11 07:00 jenkins-support
-rw-rw-r-- 1 root root     1301 Jun 11 07:00 jenkins.sh
-rwxrwxrwx 1 root root 54308597 Jun  6 10:56 kubectl
-rw-rw-r-- 1 root root     3917 Jun 11 07:00 plugins.sh

推荐阅读