2016-04-28 3 views
0

Вот часть моего Dockerfile:Локальный объем докер с разрешения записи с WWW-данных

RUN mkdir /data 
RUN chown www-data:www-data /data 
RUN chmod 664 /data 
VOLUME ["/data"] 

создать изображение с помощью команды:

docker build -t webapp . 

я бегу это так:

docker run -d -p 80:80 -v /home/user/data:/data webapp 

Но в каталоге моего хозяина каталог data создается следующим образом:

drwxr-xr-x 2 root root 4,0K avril 28 21:52 data 

А в изображении (DOCKER Exec -это CONTAINER_ID Баш) я есть:

drwxr-xr-x 2 root root 4096 Apr 28 19:52 data 

Так команды игнорируются из Dockerfile.
Как приложение веб-докеров может получить разрешение на запись в каталоге хоста?

ответ

1

Итак, вы строите изображение, устанавливаете chmods, и все круто. Но тогда вы запускаете контейнер с опцией -v, что означает, что данные будут заменены установленным томом. В это время все файлы и разрешения от встроенного изображения игнорируются. Вы можете проверить это, запустив контейнер без опции -v. Решением является создание сценария входа (с помощью команды ENTRYPOINT или CMD в Dockerfile), которая сначала исправит разрешения, а затем запустит исходную команду для вашего изображения.

Смежные вопросы