sed: невозможно переименовать ./sed6x9apB: операция не разрешена при использовании docker-compose с изображением WordPress

1949
AndrewD

Контейнер 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) 
0

1 ответ на вопрос

0
AndrewD

Похоже, что это ошибка в 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

Похожие вопросы