仅在特定位置运行mkdir时Dockerfile构建失败 [英] Dockerfile build fails when running mkdir only for particular locations

查看:159
本文介绍了仅在特定位置运行mkdir时Dockerfile构建失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们的应用程序是一组Docker容器,我的Dockerfile如下:

Our application is a set of docker containers, my Dockerfile looks like:

FROM jenkins/jenkins:lts
MAINTAINER xyz
RUN mkdir -p /opt/service
WORKDIR /opt/service
ARG NODE_ENV
ENV NODE_ENV=$NODE_ENV
COPY package.json /opt/service
COPY package-lock.json /opt/service
RUN npm install
COPY . /opt/service
CMD [ "npm", "start" ]

位置1:myproject/jenkins/dockerfile-它无法执行mkdir

Location 1: myproject/jenkins/dockerfile - it fails to perform mkdir

mkdir: cannot create directory ‘/opt/service’: Permission denied
The command '/bin/sh -c mkdir -p /opt/service' returned a non-zero code: 1

位置2:myproject/frontend/dockerfile-相同的docker文件副本可以很好地构建

Location 2: myproject/frontend/dockerfile - the same copy of docker file builds well

我的docker-compose文件结尾为:

My docker-compose file ends with:

app:
  build:
    context: .
    dockerfile: jenkins/Dockerfile

推荐答案

位置1提供了预期的结果,我不明白为什么位置2可以成功构建.

Location 1 gives the expected result and I don't see why location 2 could build successfully.

使用jenkins/jenkins:lts图像的默认用户是 jenkins ,该用户没有特权在/opt 中创建文件夹.

The default user using jenkins/jenkins:lts image is jenkins, who DOES NOT have privilege to create folder at /opt .

我启动了一个jenkins/jenkins:lts容器并运行了相同的命令:

I launched the a jenkins/jenkins:lts container and ran the same command:

jenkins@b4890ac012a6:/$ mkdir -p /opt/service
mkdir: cannot create directory ‘/opt/service’: Permission denied

# Equivalently
jenkins@b4890ac012a6:/opt$ mkdir service
mkdir: cannot create directory ‘service’: Permission denied

要解决此问题,您需要先切换到USER root 来创建目录:

To solve this, you need to either switch to USER root to create the directory first:

....
USER root
RUN mkdir -p /opt/service
USER jenkins
....

或者您可以选择 jenkins 具有可执行权限的路径.

Or you can pick a path that jenkins has executable permission.

这篇关于仅在特定位置运行mkdir时Dockerfile构建失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆