Docker: Bir Dockerfile'da RUN mkdir çalıştırılamıyor


116

Bu bir Docker görüntüsü oluştururken aldığım bir hata mesajı:

Adım 18: ÇALIŞTIR mkdir / var / www / app && chown luqo33: www-data / var / www / app ---> 7b5854406120'de çalıştırılıyor mkdir: '/ var / www / app' dizini oluşturulamıyor: Böyle bir dosya veya dizin yok

Bu, hataya neden olan Dockerfile'ın bir parçasıdır:

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' dizini oluşturamıyor: Böyle bir dosya veya dizin yok" kulağa çok saçma geliyor - tabii ki böyle bir dizin yok. Onu yaratmak istiyorum. Burada sorun ne?


4
Burada Docker'a özgü bir şey yok, btw - onsuz mkdir /var/www/appolmayan bir sistemde çalışırken aynı sorunu yaşarsınız /var/www.
Charles Duffy

Yanıtlar:


178

Sorun şu ki, bu da /var/wwwmevcut değil ve mkdirvarsayılan olarak özyinelemeli değil - hemen ana dizinin var olmasını bekliyor.

kullanın:

mkdir -p /var/www/app

... veya /var/wwwDockerfile'ınızda bu noktaya ulaşmadan önce bir paket oluşturan bir paket kurun.


Bunu işaret ettiğiniz için teşekkürler. Bu arada, bunun hangi paketi yaratacağını kastediyorsun /var/www?
luqo33

Bu Ubuntu 14.04 paketlemesi ile ilgili bir sorudur; Orada uzman değilim.
Charles Duffy

60

Varolmayan bir üst dizin (ler) den asılı alt dizinler oluştururken, -pbayrağı mkdirşuraya iletmelisiniz ... Lütfen Dockerfile dosyanızı güncelleyin.

RUN mkdir -p ... 

Bunu test ettim ve doğru.


17

Ayrıca şunu da kullanabilirsiniz:

WORKDIR /var/www/app

Klasörler yoksa, otomatik olarak oluşturur.

Ardından, içinde olmanız gereken dizine geri dönün.


-1

Önceki kullanım durumlarından ayrı olarak, Docker Compose'u aşağıdakiler üzerinde yeni sahte klasörler oluşturmak istemeniz durumunda dizinler oluşturmak için de kullanabilirsiniz docker-compose up:

    volumes:
  - .:/ftp/
  - /ftp/node_modules
  - /ftp/files

Bu cevabın nesi var? Helzgate's de geç kalmıştı.
Peter Mortensen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.