src作業用のディレクトリを用意しましょう。最終的にLaravelプロジェクトがインストールされるのはsrc直下になります。docker-compose.ymlの用意ここではそれぞれのコンテナへの設定などをしていきます。./php/DockerfileこのコンテナはこのディレクトリにあるDockerfileを使って導入(build)するよという指定。./src:/var/www/html左側が自分のローカル内ディレクトリのパス。右側はDockerコンテナ内のディレクトリ。これはローカルの./srcをDockerコンテナ内の/var/www/htmlとして使うよという指定。env/.env.mysqlこれはこのコンテナ内で使用する環境変数を設定するための指定です。右側のファイル内に書かれている環境変数を使うよという指定です。linux/x86_64MacのM1チップではこれを指定しておかないとコンテナ立ち上げ時に下記エラーになり動かなくなります。db-data:/var/lib/mysqldbのデータをどこに保持するかの指定をします。これもwebブロックの時の同じで、左側がローカル、右側がDockerコンテナ内ディレクトリになります。一つ異なるのはdb-data部分。これはDockerアプリのボリュームというデータの保存場所です。Dockerはもう一度コンテナを作り直りなおすと、保存されたコンテナ内のデータも全て消えてしまいます。それを永続化するためにこのボリュームを使います。db-data:そして、こちらがそのボリュームの作成をするための指定です。db-dataは/var/lib/docker/volumes...に作成されます。ちなみにymlファイルはインデントで階層が決まるのでservices:と同じ階層になるように書かないと下記エラーで動かなくなります。allowedDockerfileの用意webコンテナで設定した下記ファイルを実際に用意します。build-essentialこれはwebコンテナで使用するアプリケーションをインストールするためのものです。Dockerコンテナは基本的にLinuxベースで動いているので、aptで必要なものを入れていきます。この時点でLaravelをインストールするために必要になるComposerも入れています。.envファイルの用意こちらも、webコンテナで設定した下記ファイルを実際に用意していきましょう。upこれで環境を構築するための準備ができました。最後にdocker-compose.ymlファイルと同じ階層で、下記コマンドを実行します。upすこし時間がかかりますが、しばらくすると下記のようなものが表示されます。local_web...これで立ち上げが完了したので、次に下記アドレスにアクセスします。http://localhost:8080しかし、現時点ではファイルが何もなくforbiddenになってしまうので./srcにindex.phpを作成します。ついでにphpとDBへの接続ができているかを確認するため、内容はこのようにします。'</pre>';}phpinfo();再びhttp://localhost:8080に接続すると画像のような表示になります。ここからちょっと一手間工夫します。DocumentRootを変更できるようにするこのままだとApacheのDocumentRootを変更するのに、毎回Dockerのイメージを再構築しなければなりません。すると、そのたびにDockerのコンテナを削除、イメージを削除、docker-compose...という手間がかかってしまうので、できればコンテナの再起動だけで済ませたいところ。新しくターミナルを開いてこのコマンドを実行し、Apacheのconfファイル群をローカル側にコピーします。これは自分のローカル側からDockerのコンテナ内へ、またその逆へファイルをコピーすることができるコマンドです。これを使ってlocal_webコンテナの中のapacheのconfファイルをローカルにコピーします。コマンド実行後、apache/sites-availableというディレクトリ直下に下記ファイルが作られるはずです。upをしたターミナルでCtrl+Cを使い、Dockerコンテナをストップさせます。doneストップしたことを確認したら、下記コマンドでコンテナを削除します。-fこれが完了したら、docker-comopse.ymlファイルに下記の1行をwebブロックのvolumesに書き加えます。upを実行しlocalhost:8080に接続できるか確認しましょう。さぁ、これでやっとLaravelを導入する準備ができました。Thanksこの記事でのDockerfileなどの構築は、こちらの記事を参考にしました。英語ではありますがとてもわかりやすく書かれているので、気になった方はみてみてください。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。