私はLaravelサイトをDocker化しようとしています。ウィンドウズ10また、docker ツールボックスは私にとってはうまく機能しません (相対パスがうまくマウントされません)。
そこで、Virtualbox Ubuntu 16.xサーバーをセットアップし、VM内にdocker CEをインストールすることにしました。次に、C:\Projects
Windowsホストマシン上の共有フォルダをUbuntu VMに追加しました。次に、VM内にGuest Additionsをインストールして、共有フォルダがVMの以下の場所に表示されるようにしました。/media/sf_Projects/
最後に、次のコマンドを使用して、非ルート アカウントをlatheesan
に追加し、へのシンボリック リンクを作成しました(簡単にアクセスできるようにするため)。vboxsf
sudo adduser latheesan vboxsf
/media/sf_Project
/home/latheesan/Projects
Ubuntu VM を再起動すると、latheesan ユーザーとして共有フォルダーの内容にアクセスできるようになりました。
そこで、ホスト マシン上のプロジェクトを次のC:\Projects\mysite.io
dir に複製しました。
次に、Ubuntu VirtualBox VM (Docker CE を実行) に ssh で接続し、docker-compose build && docker-compose up -d
コマンドを実行しました。すべてが機能し、コンテナーが起動しました。docker コンテナーで実行されているサイトにアクセスすると、Apache から次のエラーが表示されました。
禁止 このサーバーの / にアクセスする権限がありません。
そこで、コンテナー内で対話型シェルを起動したところ、サイト ディレクトリが www-data ではなくルートとしてマウントされているようです。おそらくこれがエラーの原因です。
ホスト マシンとコンテナーでの操作のすべてのログは次のとおりです。https://pastebin.com/raw/M7Jq0CgP
これが私の設定です:
docker-compose/サイト/Dockerfile https://pastebin.com/raw/pWhf8uzH
docker-compose/site/vhost.conf https://pastebin.com/raw/wgZ68e9E
docker-compose/サイト/php.ini https://pastebin.com/raw/neSiaAqw
ボリュームがマウントされない理由について何かアイデアはありますかwww-data
? または、Windows ホスト マシン + 仮想ボックス VM + Docker CE を使用してもこれは不可能ですか?
答え1
[...] デフォルトのマウント オプションが使用され、すべてのファイルは root によって所有されます。これは、マウント オプションを追加することで変更できます。オプションは -o パラメータで渡されます。1 つのパラメータで複数のオプションを使用することもできます。その場合は、値をコンマで区切ります。使用できるオプションの詳細については、マウントのマニュアル ページを参照してください。ユーザー マニュアルには、共有フォルダーと互換性のあるオプションも記載されています。ファイルの所有者になるように SF をマウントするには、次のコマンドを使用します。
sudo mount -t vboxsf -o rw,uid=1000,gid=1000 share ~/host