Работа команды mkdir с dockerfile - PullRequest
0 голосов
/ 11 октября 2018

Я не могу создать каталог с командой mkdir в контейнере с dockerfile.

Мой файл Dockerfile - это просто;

FROM php:fpm

WORKDIR /var/www/html

VOLUME ./code:/var/www/html

RUN mkdir -p /var/www/html/foo

Таким образом, я создал простой контейнер php: fpm.и я написал, чтобы создать каталог с именем foo.

docker build -t phpx .

Я создал с помощью приведенного выше кода.

В моем файле docker-compose, как показано ниже.

version: '3'

services:
web:
container_name: phpx
build : .
ports:
- "80:80"
volumes:
- ./code:/var/www/html

потом;запустите следующий код, и я войду в ядро ​​контейнера.

docker exec -it phpx /bin/bash

, но в / var / www / html нет каталога с именем foo.

Интересногде я делаю не такВы можете мне помочь?

1 Ответ

0 голосов
/ 11 октября 2018

Причина в том, что вы монтируете том со своего хоста на /var/www/html.Шаг за шагом:

  1. RUN mkdir -p /var/www/html/foo создает каталог foo внутри файловой системы вашего контейнера.
  2. docker-compose.yml ./code:/var/www/html "скрывает" содержимое /var/www/htmlв файловой системе контейнера за содержимым ./code в файловой системе хоста.

Таким образом, на самом деле, когда вы выполняете в свой контейнер, вы видите содержимое каталога ./code на хосте, когда вы смотритев /var/www/html.

Исправлено: Либо вы удаляете том из вашего docker-compose.yml, либо создаете каталог foo на хосте перед запуском контейнера.

Дополнительное замечание : В вашем Dockerfile вы объявляете том как VOLUME ./code:/var/www/html.Это не работает, и вы, вероятно, должны удалить его.В Dockerfile вы не можете указать путь на вашем хосте.

Цитирование из docker :

Каталог хоста объявляется во время выполнения контейнера: Хосткаталог (точка монтирования) по своей природе зависит от хоста.Это для сохранения переносимости изображения.поскольку данный каталог хостов не может быть гарантированно доступен на всех хостах.По этой причине вы не можете смонтировать каталог хоста из Dockerfile. Инструкция VOLUME не поддерживает указание параметра host-dir .Вы должны указать точку монтирования при создании или запуске контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...