PHP開発用にDockerComposeで色々してた
経緯
今度の仕事でPHPを使うことになるっぽい。
そこでPHP開発用にDockerのコンテナ作ってVSCodeのRemoteContainerで開発したいなと思い、ちょっと環境を作ってました。
方針
TLSを使いたい
開発に使うのに便利なDockerComposeを準備する。
最近はTLS接続が必要になるのでなんとかできるようにしたい。
そのためWebの受付はjwilder/nginx-proxyを使い、ここからリバースプロキシ経由で開発用のPHPが動いているコンテナにつなぎます。
TLSの証明書は.localでまとめて設定しておき、hoge.local, hage.localといったlocalドメインであれば新たに設定は不要とします。
(ただしVIRTUAL HOST設定するので /etc/hosts などの設定は必須となります)
PHP DebugやPHPCSなどを簡単に使いたい
VSCodeで開発する前提としておりまして、該当コンテナに接続した際に、サクッとデバッグ(ブレークポイントの設定などですね)とか、PHPCSによるコードのチェックなどを行えるようにしたいです。
コンテナ作ってGitHubにおきました
そんなわけでなんとなく作っておきました。
内容は稚拙だと思いますので詳しい方は正直この記事見なくていいんじゃないかなって・・・・・
使い方
大体こんな感じでやってました。
/etc/hosts に.localなホスト名を適当に設定します。
デフォルトは hoge.local で作ってあるのでとりあえずhoge.localで・・・・
127.0.0.1 hoge.local
あとは下記のような感じでやればできるかなと
docker network create shared_net
cd [適当なディレクトリ]
git clone https://github.com/saitoooo/mylocal-nginx-proxy.git -b v1.0
cd mylocal-nginx-proxy
docker-compose up -d
cd ..
git clone https://github.com/saitoooo/base_php_container.git -b v1.0
cd base_php_container
code .
でVSCodeが起動したら、Reopen Containerみたいなやつを選択しましょう。
ビルドからコンテナの起動までやってくれます。ありがたや。
それが終わったら https://hoge.local へブラウザへアクセスすれば、オレオレ証明書の警告が来ます!💦
無視してアクセスすればよくあるphpinfoのページが表示されるかと思います。
ちょっとした説明的なこと
hoge.localじゃないホスト名も作りたい
/etc/hostsに別の hage.local みたいなホスト名書いてくださいな。
そして別のbase_php_containerを作ってweb.envファイルに書いてあるVIRTUAL_HOSTをhoge.localからhage.localに変更してください
新たにdocker-compose upでhagelocalサイトの出来上がりです🤗
もちろん、最初に作ったhoge.localとも同居可能です。
Lima on Dockerでの注意
Lima上にDockerを構築しているとうまくいかないかもしれません。
その場合、mylocal-nginx-proxyのdocker-compose.ymlの書き換えが必要です。
コメントアウトしている部分を外して、その下の行を代わりにコメント化してください。
PHP側のコンテナについて
PHPのコンテナの基本はDockerHubにあるPHP公式イメージを使っています。
こちらのphp:8.1-apacheのイメージを使っています。
このイメージに対して、下記のことをおこなっています。
- LANG=ja_JP.UTF-8 にする
- mbstring pdo pdo_pgsql gd iconv zip をインストール
- composerインストール
- squizlabs/php_codesniffer と friendsofphp/php-cs-fixer をインストール
- xdebug のインストールと有効化
あと .devcontainer.json によるVSCode使用時における各種拡張の自動インストールと設定をおこなっています。
おまけ
こんなに簡単にできるんだぜー!っていう動画撮ろうと挑戦したけど微妙になった話。
Discussion