Контейнер Docker пытается смонтировать каталог, который является файлом - PullRequest
0 голосов
/ 25 июня 2019

Я создаю CMS Craft в Docker и получаю следующую ошибку, когда я выполняю docker-compose up:

ОШИБКА: для craftcms Невозможно запустить службу CraftCMS: Ошибка выполнения OCI: container_linux.go: 344: запуск процесса контейнера вызвал "process_linux.go: 424: вызвал инициацию контейнера \" rootfs_linux.go: 58: монтирование \\ "/ host_mnt / c / src / composer.lock \\" в rootfs \\ "/ var/ lib / docker / overlay2 / b7084475699f911f17d38746b21b1b9694fedf6e096a4080109d429fa687a6db / merged \\ "в \\" / var / lib / docker / overlay2 / b7084475699f9 \ \ \ \ \ \ \ \ \ \ wf6 "\ "": unknown: Вы пытаетесь смонтировать каталог в файл (или наоборот)?Проверьте, существует ли указанный путь к хосту и соответствует ли он ожидаемому типу. ОШИБКА: Обнаружены ошибки при запуске проекта.

Очевидно, что монтирование каталогов в ОС Windows отличается от ОС Linux.Не могли бы вы помочь мне решить эту проблему?

enter image description here

ОБНОВЛЕНИЕ

Из docker-compose.yml,вот где я монтирую файлы:

craftcms:
    build:
      context: .
      dockerfile: ./infrastructure/docker/php-fpm/Dockerfile
    expose:
      - 9000
    volumes:
      - cpresources:/var/www/web/cpresources
      - ./src/vendor:/var/www/vendor
      - ./src/composer.json:/var/www/composer.json
      - ./src/composer.lock:/var/www/composer.lock
      - ./src/config:/var/www/config
      - ./src/modules:/var/www/modules
      - ./src/templates:/var/www/templates
      - ./src/web:/var/www/web

1 Ответ

1 голос
/ 25 июня 2019

Как правило, это означает, что src/composer.lock либо не является файлом, либо что диск, на котором эти файлы существуют, неправильно используется совместно с виртуальной машиной док-станции.

В первом случае проверьте каталог, в котором вы работаетеdocker-compose from, это каталог с цензурой, поэтому я не могу предоставить вам более подробную информацию, чем эта.У вас должен быть src\composer.lock там как обычный файл, а не каталог.

Для последнего зайдите в настройки докера и перенастройте общий доступ к диску, чтобы убедиться, что диск с вашим составным проектом включен,и этот докер имеет ваш текущий пароль (он выполняет монтирование Windows SMB для совместного использования диска с виртуальной машиной докера).

Когда докер пытается смонтировать файл, который не существует в качестве хоста, действие по умолчанию:создать каталог на хосте (это может быть только в виртуальной машине докера, если каталог не используется должным образом) и смонтировать этот каталог внутри контейнера.И если предполагается, что это файл, а не каталог внутри контейнера, вы получите ошибку.

...