Docker : Dockerfile에서 RUN mkdir을 실행할 수 없습니다.


116

이것은 Docker 이미지를 빌드 할 때 표시되는 오류 메시지입니다.

18 단계 : 실행 mkdir / var / www / app && chown luqo33 : www-data / var / www / app ---> 7b5854406120에서 실행 mkdir : '/ var / www / app'디렉터리를 만들 수 없습니다 : 해당 파일 또는 디렉터리가 없습니다.

다음은 오류를 일으키는 Dockerfile의 일부입니다.

FROM ubuntu:14.04
RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33

<installing nginx, fpm, php and a couple of other things>

RUN mkdir /var/www/app && chown luqo33:www-data /var/www/app
VOLUME /var/www/app
WORKDIR /var/www/app

"mkdir : '/ var / www / app'디렉토리를 만들 수 없습니다 : 해당 파일이나 디렉토리가 없습니다."소리가 너무 무의미합니다. 물론 그러한 디렉토리는 없습니다. 나는 그것을 만들고 싶다. 여기서 무엇이 잘못 되었습니까?


4
여기서 Docker와 관련된 것은 없습니다. btw- mkdir /var/www/app없는 시스템에서 실행되는 동일한 문제가 발생 /var/www합니다.
Charles Duffy 2015 년

답변:


178

문제는 /var/www역시 존재하지 않으며 mkdir기본적으로 재귀 적이 지 않다는 것입니다. 즉, 바로 위의 상위 디렉토리가 존재할 것으로 예상합니다.

사용하다:

mkdir -p /var/www/app

... 또는 /var/wwwDockerfile에서이 지점에 도달하기 전에를 생성하는 패키지를 설치 하십시오.


지적 해 주셔서 감사합니다. 그건 그렇고, 어떤 패키지가 생성된다는 의미 /var/www입니까?
luqo33

우분투 14.04 패키징에 대한 질문입니다. 나는 거기 전문가가 아닙니다.
Charles Duffy 2015 년

60

존재하지 않는 상위 디렉터리에서 중단되는 하위 디렉터리를 만들 때 -p플래그를 mkdir...로 전달해야 합니다. Dockerfile을 다음으로 업데이트하십시오.

RUN mkdir -p ... 

나는 이것을 테스트했고 정확합니다.


17

당신은 또한 단순히 사용할 수 있습니다

WORKDIR /var/www/app

폴더가 없으면 자동으로 생성됩니다.

그런 다음 있어야하는 디렉토리로 다시 전환하십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.