[英]cannot execute RUN mkdir in a Dockerfile with space in directory name
[英]Cannot execute RUN mkdir in a Dockerfile
這是我在構建 Docker 圖像時收到的錯誤消息:
Step 18 : RUN mkdir /var/www/app && chown luqo33:www-data /var/www/app
---> Running in 7b5854406120 mkdir: cannot create directory '/var/www/app': No such file or directory
這是導致錯誤的 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: cannot create directory '/var/www/app': No such file or directory
聽起來很荒謬——當然沒有這樣的目錄。 我想創造它。 這里有什么問題?
問題是/var/www
也不存在,並且默認情況下mkdir
不是遞歸的——它期望直接父目錄存在。
用:
mkdir -p /var/www/app
...或在到達 Dockerfile 中的這一點之前安裝一個創建/var/www
的包。
創建從不存在的父目錄掛起的子目錄時,您必須將-p
標志傳遞給mkdir
...請更新您的 Dockerfile
RUN mkdir -p ...
我測試了這個,它是正確的。
您也可以簡單地使用
WORKDIR /var/www/app
如果文件夾不存在,它將自動創建文件夾。
然后切換回您需要進入的目錄。
此外,如果您想使用多個目錄然后更改其所有者,您可以使用:
RUN set -ex && bash -c 'mkdir -p /var/www/{app1,app2}' && bash -c 'chown luqo33:www-data /var/www/{app1,app2}'
只是這個!
除了之前的用例,您還可以使用Docker Compose創建目錄,以防您想在docker-compose up
上創建新的虛擬文件夾:
volumes:
- .:/ftp/
- /ftp/node_modules
- /ftp/files
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.