
設定:先週、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-data
systemd-coredump
/var/www/html/data
config.php
しかし、、問題が発生しました。どの無制限のストレージが割り当てられるため、アカウントには少なくとも1 TBのストレージが必要です。ストレージは通常50 GB未満のVagrantインスタンスサイズに制限されます。これは/var/www/html/data
Vagrantインスタンスにアカウントデータが正しく配置されているにもかかわらず、いいえ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をローカルにインストールすることで、これらのハングを削除することです。しかし、これが私の最後の手段です。もっと興味があるなぜこの問題は、以前にフォルダが同期されない問題がなかったために発生します。