Nextcloud DockerコンテナはVirtualBoxホストにデータを同期しません。

Nextcloud DockerコンテナはVirtualBoxホストにデータを同期しません。

設定:先週、VirtualBoxとVagrantを使用して、以前の2015 Macbook ProのUbuntu Server VMにNextcloud Dockerインスタンスを設定しようとしました。 VMには限られたNextcloudコンテナストレージしかありませんが、ファイルストレージを担当するDockerボリュームは、MBPにマウントされた2TB APFS SeagateドライブのVirtualBoxによって提供される共有フォルダにあります。プロセスは Vagrant ファイルに次のように記述されています。

# /vagrant/Vagrantfile
Vagrant.configure("2") do |config|

  config.vm.box = 'ubuntu/focal64'
  config.vm.hostname = 'ubuntu-server'
  config.vm.network # some network configs
  config.vm.synced_folder '/Volumes/SEAGATE/data/nextcloud', '/media/nextcloud'
  config.vm.provision "shell", path: "setup.sh"

end

setup.sh以下では

# /vagrant/setup.sh
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get -y install docker docker.io docker-compose
sudo docker-compose -f /vagrant/docker-compose.yml up -d

docker-compose.ymlそして以下のほぼ定型句では、

# /vagrant/docker-compose.yml
version: '3'

services:

  nextcloud_db:
    image: mariadb:10.5
    container_name: nextcloud_db
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - /media/nextcloud/var/lib/mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  nextcloud:
    image: nextcloud
    container_name: nextcloud_server
    restart: always
    ports:
      - 8080:80
    links:
      - nextcloud_db
    volumes:
      - /media/nextcloud/var/www/html:/var/www/html
    environment:
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db
      
volumes:
  nextcloud:
  nextcloud_db:

ノート:Vagrantインスタンスが完了したら、通常はNextcloudサーバーファイルの所有権とグループを再ロードするためにインスタンスを再起動します。これは、これらのサーバーファイルがに割り当てられ、またはrootに割り当てられる必要があるためです。このような割り当てが正しくないと、特定のディレクトリやファイルに書き込めなくなる可能性があります。www-datasystemd-coredump/var/www/html/dataconfig.php

しかし、、問題が発生しました。どの無制限のストレージが割り当てられるため、アカウントには少なくとも1 TBのストレージが必要です。ストレージは通常50 GB未満のVagrantインスタンスサイズに制限されます。これは/var/www/html/dataVagrantインスタンスにアカウントデータが正しく配置されているにもかかわらず、いいえMacbookホストが/Volumes/SEAGATE/data/nextcloud/var/www/html/data必要な場所にあります。これは、セットアップ時にNextcloudボリュームがSeagateドライブで完全に同期されるという事実にもかかわらず、これはセットアップ後のある時点でファイルの同期が失敗することを意味します。

これを再現するには:インスタンスの作成vagrant up、インスタンスの再起動、Nextcloudのようこそページへのエントリ、Nextcloud rootユーザーの作成に使用されます。ルートユーザーのデータは、ホストではなくゲスト仮想マシンでのみ表示できます。

要因この問題は、共有フォルダが外部にマウントされているかローカルディレクトリにあるかに関係なく、WindowsとMacOSの両方のオペレーティングシステムで発生します。たとえば、/Volumes/SEAGATE/data/nextcloud一部のローカルディレクトリに切り替えると、./local/nextcloud同じ結果が表示されます。また、Dockerバインドマウントに切り替えても結果は変わりません。

頑張ったDockerデータディレクトリの移動、通常Dockerボリュームを移動する方法を探しています。関連があると思われるいくつかの以前の質問があります。外部ストレージ - フォルダとファイルが認識されません。

それでも解決策がないという意味ではありません。 VMがシャットダウンしても内部同期が良好であるため、明らかに問題はありません。だから私の核兵器今すぐオプションは、MacbookでUbuntuをダブルブートし、Dockerをローカルにインストールすることで、これらのハングを削除することです。しかし、これが私の最後の手段です。もっと興味があるなぜこの問題は、以前にフォルダが同期されない問題がなかったために発生します。

ベストアンサー1

おすすめ記事