Docker не синхронизирует c папки с хоста на контейнер - PullRequest
1 голос
/ 07 мая 2020

Я пробовал множество различных комбинаций в файле docker -compose.yml.

когда эта строка:

- .:/var/www/html

изменилась на эту:

- *:/var/www/html

Затем он скопирует файлы в рабочий каталог, но нет синхронизации c. Я попытался заключить строку в кавычки, изменив точку на ./, но безрезультатно. var / www/html либо пуст, либо содержит файлы только при использовании *, но синхронизация не происходит c.

Вот мои Dockerfile

FROM php:7.3.0-apache

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
    && apt-get update && apt-get install -y git libzip-dev unzip \
    && docker-php-ext-install zip \
    && a2enmod rewrite headers

COPY . /var/www/html/

COPY ./config/vhost.conf /etc/apache2/sites-available/000-default.conf

и docker -compose .yml.

version: '3.4'

services:
    app:
        ports:
            - 80:80
        environment:
            - APACHE_DOCUMENT_ROOT=/var/www/html/app/public
        build:
            context: .
        volumes:
            - .:/var/www/html

РЕДАКТИРОВАТЬ: Обновить. Я попытался удалить строку копирования, работал только так, чтобы создать пустой каталог html в контейнере. Что касается того, как я проверяю, я делаю docker exe c -it в контейнере runnint и просто выполняю команду ls в каталоге html. Я переустановил docker toolbox и заметил, что с ним gui ... Я не видел никаких объемов при выполнении docker volume ls, но объем отображается в Kitemati c. Однако каталог на главной машине НЕ такой, как можно было бы ожидать, это не папка на диске d, в которой находится docker -compose, а папка в моих документах. Попытка изменить его на правильный в gui, и он говорит неверный каталог. Я помню, как где-то читал, что docker имеет ограниченный доступ к файловой системе хоста, и мне интересно, не пропустил ли я здесь шаг и вместо этого должен поделиться всем диском D с docker.

EDIT 2: Добавлено папку на диске d на виртуальную машину с именем default в список общих папок, перезапустил все и по-прежнему нет кубиков. Как я могу указать местоположение на диске d?

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Итак, я исправил ... Решение для всех, у кого такая же проблема, поделитесь своим диском D, затем перезапустите машину docker и затем запишите полный путь, например, для диска D, который имеет имя папки машины в Virtualbox как D_DRIVE. / D_DRIVE / путь / к / желаемой / папке

Всем спасибо за идеи. Ладья ie ошиблась.

0 голосов
/ 07 мая 2020

Если вы хотите, чтобы ваша папка синхронизировалась c между хостом и контейнером, вам нужно mount it вместо coping it: проверить эту документацию

Для вашей проблемы вам необходимо удалить COPY . /var/www/html/ из Dockerfile

Вы также можете проверить это сообщение .

...