Контейнер WordPress не запускается при использовании docker-compose, где существуют существующие файлы WordPress, прерывается со следующей ошибкой:

sed: cannot rename ./sedtpghTB: Operation not permitted

Ошибка возникает только тогда, когда файлы WordPress размещены в общей папке VirtualBox (vboxsf). Совместное использование папки через SMB/CIFS позволяет избежать ошибки.

Настроить:

  • Ведущий: Win 10 (64b)
  • Гость: 3.16.0-4-amd64 (debian_version 8.6) Гость / версия Vbox: 5.1.12 r112440 (Qt5.6.2)
  • Файлы WordPress распространяются с помощью общей папки VirtualBox, смонтированной в /media/vmhost

Вот вывод конфигурации docker-compose:

        networks: {}
        services:
          db:
            environment:
              MYSQL_DATABASE: my_db_name
              MYSQL_PASSWORD: 'MY_ROOT_PASSWORD'
              MYSQL_ROOT_PASSWORD: 'MY_ROOT_PASSWORD'
              MYSQL_USER: root
            image: mysql:5.7
            ports:
            - 3306:3306
            restart: never
            volumes:
            - db_data:/var/lib/mysql:rw
          wordpress:
            depends_on:
            - db
            environment:
              WORDPRESS_DB_HOST: db:3306
              WORDPRESS_DB_NAME: my_db_name
              WORDPRESS_DB_PASSWORD: 'MY_PASSWORD'
              WORDPRESS_DB_USER: root
            image: wordpress:latest
            ports:
            - 80:80
            restart: never
            volumes:
            - /media/vmhost/www/test:/var/www:rw
            - /media/vmhost/www/test/public_html:/var/www/html:rw
        version: '2.0'
        volumes:
          db_data: {}
          wp_data: {}

Когда я пытаюсь использовать sed для общего ресурса vboxsf, я получаю похожую ошибку, но только когда исходный файл доступен только для чтения.

echo 'hello' > hello.txt
chmod a-w hello.txt
sed -i  's/hello/goodbye/' hello.txt

ошибка:

sed: cannot rename ./sed6x9apB: Operation not permitted

вывод горы | grep www

    www on /media/vmhost/www type vboxsf (rw,nodev,relatime)

Когда я использую общий ресурс CIFS, смонтированный в /media /vmhost /www2, все работает нормально.

//my_laptop/www on /media/vmhost/www2 type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=vboxsf,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.1.5,file_mode=0777,dir_mode=0777,nounix,serverino,noperm,rsize=61440,wsize=65536,actimeo=1)

1 ответ1

0

Похоже, что это ошибка в VirtualBox, см. Билет # 4890 .

Ответ Фрэнка:

исправлено для хостов Linux, но не для хостов Windows. В отличие от Linux, где файл может быть удален, если каталог доступен для записи, но сам файл доступен только для чтения, файл только для чтения не может быть удален в Windows

Это влияет на sed, так как sed делает копию исходного файла (в данном случае wp-config-sample.php) во временный файл, а затем пытается выполнить замены, которые не будут поддерживаться окнами, поскольку копия также доступна только для чтения.

По какой-то причине на правильную долю с использованием CIF это не влияет.

Обходной путь 1: Сделайте исходный файл доступным для записи и перезапустите контейнер.

chmod a+w wp-config-sample.php docker-compose up

Обходной путь 2: Используйте общий ресурс CIFS.

  1. На вашем компьютере с Windows откройте общий доступ к каталогу, содержащему ваши файлы WordPress, используя расширенные свойства каталога Windows.
  2. На вашей виртуальной машине VirtualBox добавьте следующее в /etc /fstab

    //my_laptop/www  /media/vmhost/www  cifs  username=WINDOWS_USER,password=WINDOWS_USER_PASSWORD,file_mode=0777,dir_mode=0777,iocharset=utf8,noperm,sec=ntlm  0  0
    
  3. крепление

    mount -a

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .