Laravel+Nginx+Dockerでpublicファイルを出すために
本題
Dockerを使っていると、NginxとLaravelのコンテナはもちろん分割するものと思う。 だが、このときLaravelからpublicファイルを出すためには、少しコツがいる。
なぜならば、Nginxから /api
にアクセスが来た際は容易にLaravelをFastCGI起動することができるものの、
files
にアクセスした際に、Laravelコンテナにproxyしても、 /var/www/html/public/files
に行くわけではない。
(特定のディレクトリにproxyすることは可能だったら話はもう少し簡単になるが方法がわからない)
ということで、Laravelの /public
ディレクトリのファイルはLaravelではなく、nginxコンテナから返さなければいけなくなる。
そのためには、docker-compose.yml でLaravelコンテナのソースの /public/files
をnginxコンテナにマウントしなければならない、ということになる。
マウントさえしてしまえば、 /files
へのアクセスの際に、 /var/www/html/public
のような場所からpublicファイルをホストすることができる。