Laravel アプリケーションを Docker 化する - Apache サーバーで権限が拒否される

Laravel アプリケーションを Docker 化する - Apache サーバーで権限が拒否される

私はLaravelサイトをDocker化しようとしています。ウィンドウズ10また、docker ツールボックスは私にとってはうまく機能しません (相対パスがうまくマウントされません)。

そこで、Virtualbox Ubuntu 16.xサーバーをセットアップし、VM内にdocker CEをインストールすることにしました。次に、C:\ProjectsWindowsホストマシン上の共有フォルダをUbuntu VMに追加しました。次に、VM内にGuest Additionsをインストールして、共有フォルダがVMの以下の場所に表示されるようにしました。/media/sf_Projects/

最後に、次のコマンドを使用して、非ルート アカウントをlatheesanに追加し、へのシンボリック リンクを作成しました(簡単にアクセスできるようにするため)。vboxsfsudo adduser latheesan vboxsf/media/sf_Project/home/latheesan/Projects

Ubuntu VM を再起動すると、latheesan ユーザーとして共有フォルダーの内容にアクセスできるようになりました。

そこで、ホスト マシン上のプロジェクトを次のC:\Projects\mysite.iodir に複製しました。

次に、Ubuntu VirtualBox VM (Docker CE を実行) に ssh で接続し、docker-compose build && docker-compose up -dコマンドを実行しました。すべてが機能し、コンテナーが起動しました。docker コンテナーで実行されているサイトにアクセスすると、Apache から次のエラーが表示されました。

禁止 このサーバーの / にアクセスする権限がありません。

そこで、コンテナー内で対話型シェルを起動したところ、サイト ディレクトリが www-data ではなくルートとしてマウントされているようです。おそらくこれがエラーの原因です。

ホスト マシンとコンテナーでの操作のすべてのログは次のとおりです。https://pastebin.com/raw/M7Jq0CgP

これが私の設定です:

ボリュームがマウントされない理由について何かアイデアはありますかwww-data? または、Windows ホスト マシン + 仮想ボックス VM + Docker CE を使用してもこれは不可能ですか?

答え1

からVirtualboxのドキュメント:

[...] デフォルトのマウント オプションが使用され、すべてのファイルは root によって所有されます。これは、マウント オプションを追加することで変更できます。オプションは -o パラメータで渡されます。1 つのパラメータで複数のオプションを使用することもできます。その場合は、値をコンマで区切ります。使用できるオプションの詳細については、マウントのマニュアル ページを参照してください。ユーザー マニュアルには、共有フォルダーと互換性のあるオプションも記載されています。ファイルの所有者になるように SF をマウントするには、次のコマンドを使用します。

sudo mount -t vboxsf -o rw,uid=1000,gid=1000 share ~/host

関連情報