laradock の apache2 で laravel を動作させる

laradock の 公式ドキュメントでは、nginxを起動するサンプルコードが多いですが、laradock には apache を使う仕組みも用意されています。

操作手順

面倒なトラブルを防ぐため、まずは起動しているサービスがあれば、 down させましょう

docker-compose down

ホストOS側の laradock/apache2/sites フォルダに、以下のlocalhost.confファイルを新しく作成します。

laradock/apache2/sites/localhost.conf

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /var/www/public/
  Options Indexes FollowSymLinks

  <Directory "/var/www/public/">
    AllowOverride All
    <IfVersion < 2.4>
      Allow from all
    </IfVersion>
    <IfVersion >= 2.4>
      Require all granted
    </IfVersion>
  </Directory>

</VirtualHost>
このようなイメージとなります。

次に、以下のコマンドで localhost.conf ファイルを Dockerイメージに記録します。

docker-compose build apache2

これで準備は完了です。

nginxの時と同じ要領でコンテナを起動しますが、nginx サービスではなく apache2 サービスを指定します

docker-compose up -d apache2 mysql

もっと詳しく

laradock では nginx と apache2 の初期設定に違いがあります。

laradock の nginx の初期設定

laradock の nginx の初期設定 には、http://localhost でアクセスした場合に、コンテナ内のOS の /var/www/public フォルダを公開させる記述があります。

https://github.com/laradock/laradock/blob/master/nginx/sites/default.conf#L13

laradock の apache2 の初期設定

一方、 laradock の apache2 では、http://localhost でアクセスした場合は、コンテナ内のOSの /var/www フォルダを公開する設定となっています。

これを、 nginx と同様に /var/www/public フォルダを公開するように修正すれば、 nginx を利用していた時と同じ使い勝手で laravel を開発できます。

/laradock/apache2/sites フォルダ

laradock/apache2/sites/ フォルダには sample.conf.example というファイルが用意されています。

https://github.com/laradock/laradock/blob/master/apache2/sites/sample.conf.example

このファイルをコピーして、新しく localhost.conf というファイルを追加し、以下の3つのディレクトリを書き換えました。

  • ServerName
  • DocumentRoot
  • Directory

なお、localhost.conf というファイル名でなくても動作はしますが、ファイル名の末尾は、.confで終わる必要があります。

laradock では、 ホスト OS側の laradock/apache2/sites/ フォルダの中に、*.conf ファイルを保存すると、apacheによって認識されるように設定されているようです。