WSL2+Dockerによる開発環境構築について、「【開発お役立ち情報】Windows10でのWSL2+Dockerによる開発環境構築 ~前編~」の続きです。
【コンテナの定義、Laravelのインストールと動作確認まで】
コンテナの定義はdocker-compose.ymlにて行います。
まず、すべてのコンテナを定義してしまいましょう。
~/php-laravel/docker-compose.ymlを次の内容で作成します。
**************************************************
version: ‘3’
services:
app:
build: ./app
ports:
– 80:80
volumes:
– ~/src:/var/www/app
working_dir: /var/www/app
db:
image: mysql:8
ports:
– 3306:3306
volumes:
– mydb:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: database
MYSQL_USER: appuser
MYSQL_PASSWORD: appuser
volumes:
mydb:
**************************************************
app/dbと書かれているセクションがそのままそれぞれのコンテナ定義となります。
データベースは公式で用意しているmysqlコンテナをそのまま使用します。imageで設定している個所となります。
environmentにて初期設定のデータベース名やユーザ名、パスワードを設定していますので、必要に応じて変更してください。
またコンテナ内部のファイルは、ビルドのたびにクリアされます。ご注意ください。
そのためコンテナ外部のディレクトリをコンテナ内にマウントしたり、消されない領域をvolumesで定義してそれをマウントしたりします。imagesの項目がそこにあたります。
次にapp用にweb+phpのコンテナを作成します。
公式で用意されていないコンテナを作成する場合、dockerfileを用意し、コンテナを作成していきます。
今回はphpコンテナを作成する必要がありますので~/php-laravel/app/Dockerfileを次の内容で作成します。
**************************************************
FROM php:8.0-apache
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN apt-get update && apt-get install -y git zip unzip
RUN docker-php-ext-install pdo_mysql
RUN sed -i ‘s!/var/www/html!/var/www/app/public!g’ /etc/apache2/sites-available/000-default.conf
**************************************************
記載内容の説明ですが、まずFROMで元となるコンテナイメージを公式から取得し、次の行でcomposerをインストールしています。
次にミドルウエアのインストールを行う箇所となります。今回はgitとzip関連をインストールを行っています。
次の行でdocker-php-ext-installでPHP拡張モジュールをインストールしています。今回はpdo_mysqlのみインストールしています。
最後にapacheの設定ファイル内のドキュメントルート設定を/var/www/htmlから/var/www/app/publicへ書き換えています。
以上で準備が完了しました。
コンテナビルドを行います。以下のコマンドを実行してください。
$ cd ~/php-laravel
$ docker-compose build
問題なくビルドされたら、一度コンテナを起動してみましょう。
$ docker-compose up
起動確認を行ったらCTRL+Cで一度コンテナを停止させておきます。
Windowsに戻り、docker desctopの画面を見てみましょう。イメージの中にphp-laravelが表示されていると思います。
そこに表示されている三角のボタンを押してみましょう。いま作成したコンテナが起動します。
起動したコンテナの一覧よりappコンテナを選択し、>_と書かれているボタンを押してみましょう。コンソールが立ち上がります。
これはコンテナ内のシェルを実行していますので、そのままコマンドを打てばコンテナ内の操作が可能です。
ここからlaravelのインストールを行います。コンソール上で以下のコマンドを実行してください。
$ composer create-project laravel/laravel .
これで、laravelが~/src/内にインストールされましたので、次にDBへの接続設定を追加します。
~/src/.env 内に設定が記載されているので、DBコンテナの設定どおりに書き換えましょう。
**************************************************
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=appuser
DB_PASSWORD=appuser
**************************************************
以上で、環境構築が完了しました。
ブラウザで、下記URLへアクセスしてみましょう。laravelの初期画面が表示されるはずです。
http://localhost/
あとは好きなように開発を進めていってください!
おつかれさまでした。
【おまけ】
VSCodeを使用すれば、WSL2上にソースコードが置いてあっても、Windows側で簡単にアクセス可能です。
詳細についてはご自身で調べてみてください。
【さいごに】
docker-compose.ymlへ定義を追加し、簡単に開発環境を拡張していけます。
例えばDB内容を操作するためにphpmyadminを追加したり、メール機能の確認のためにmailhogを追加したり…。
不要になれば定義を消すだけでいいので環境の組み換えが簡単にできるのもDockerの利点です。
また、一度コンテナ定義を一セット作成してしまえば、他のPCでも簡単に開発環境が構築できます。
自分のお気に入りの開発環境を、是非構築してみてください。