Try   HackMD

ShowNote:PHPerのための「Laravel/PHP8/Dockerで開発環境作りを語り合う」TechCafe

イベント

https://rakus.connpass.com/event/195001/

Laravel/PHP8/Docker関連のキーワードを主催サイドで集めました。この中から気になるテーマを拾ってワイワイできればと。

PHP開発環境

  • PHP8
  • オールインワン
    • XAMPP
      • https://www.apachefriends.org/jp/index.html
      • Apache + MariaDB + PHP + Perlのオールインワン環境。面倒な人はとりあえずXAMPP入れとけばいいんじゃないでしょうか。
        • Mac版、Windows版、Linux版それぞれあります
      • 12/4にXAMPPもPHP8に対応版がリリースされました。
      • 手軽な反面、複数バージョンのPHPやApacheなどを使いにくい、という面もあるが、本格的な開発ならXAMPPよりも他の手段を用いたほうが良いのでは。
    • Laragon ※Windowsのみ
      • https://laragon.org/
      • Windowsの場合は、XAMPPより軽量なLaragonの選択肢もあり。
        • 軽量:実行時に必要なメモリは4MB未満
        • ポータブル:(VisualStudioのランタイム等のぞき)OSへのインストールが不要
        • 異なるバージョンのPHPやApacheを切り替えられる設計
      • 最新版リリースは2019年が最後。開発自体は継続しているようだが…?
  • 仮想化ぎじゅつ
    • virtualbox
      • 1台のPC(ホストOS)の中に仮想的なPC(ゲストOS)を構築するためのツール
        • 例)Windows PC 上に Linux PC を作成
          • このLinux PC 上にPHPやMySQLをインストールしてPHPの開発環境を構築していく
    • vmware
      • 仮想環境の管理ツール
        • 高可用性実現のための仕組みを提供
          • サーバ停止時に他のサーバにVMを移動させ再起動
          • ダウンタイム無し運用
          • ホストOSの負荷状況を考慮したVMの管理
      • 事例
  • コンテナ
    • Docker導入方法
    • docker-composeもお忘れなく
    • Docker PHP
      • https://hub.docker.com/_/php
      • php:<version>-cli
        • コマンドライン実行用のイメージ
      • php:<version>-apache
        • Apache+mod_phpがセットになったイメージ
      • php:<version>-fpm
        • Nginxと組み合わせるならこっち
      • php:<version>-alpine
        • 軽量ベースイメージAlpineで動作。イメージを軽く保ちたいならこれを使えばいいがカスタマイズしようと思うと大変。
  • Windows勢
    • WSL2
      • 基本的にMicrosoftの公式手順通りに進めばよろし
        • https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
        • かつてはVirtualBoxやVMWareという選択肢しかなく、VM用に多くのマシンリソースを割く必要があった
        • WSL2では割り当てるリソースをWindowsが調整してくれるので必要なリソースしか割かれない
        • Linux互換性100%ということもあり、Linux向けに開発されているツール・ライブラリも問題なく動作
        • VSCode+RemoteDevelopment(Microsoft公式のプラグイン)との親和性も高い
        • MicrosoftがPHPについてWindows向けのサポートをやめたが、WSL2あるから大丈夫ということか?
        • プロダクション環境がLinuxで開発がWindowsなら問題なさそうだが、IISなど、MS製品でプロダクション運用してる場合はどうなるのか…
    • WSL2 + Docker
      • 宗教上の理由や、Office製品などの兼ね合いでWindowsで開発をする必要があるならおすすめしたい構成

Laravel

  • ローカルマシン系

    • Composerで自分でいれる
    • Valet
      • こちらも Laravel 公式の開発環境
        • Mac でのみサポートされているが、Homestead よりも軽量
          • PHP と MySQL のみが利用される
          • 完全な仮想環境が不要な場合はよい選択肢になりえる
          • Homebrew を利用
            • Valet 環境でのエラーログなどは決まった箇所に配置されるため慣れが必要
  • 仮想環境系

    • Homestead
      • Laravel 公式の開発環境
        • Vagrant が仮想環境(VirtualBox)の管理と事前設定をすべてやってくれる
          • Windows, Mac, Linux いずれの環境でも利用可能
            • 実態としては仮想環境上の Ubuntu 上で Laravel の実行環境ができあがる
        • 実は PHP8 も対応済み
  • docker系

    • いずれも dockerdocker-compose が利用できればすぐに構築可能

    • laradock

      • いわゆる全部入りのLaravel Docker環境
      • 設定ファイルを修正して独自の環境が作成可能
        • 例えば、PHP7 + PostgreSQL + Nginx みたいな自分好みの環境が作れる
      • プロジェクトのディレクトリ配置されている箇所に新しくLaradocを配置するだけでよいのでプロジェクトをDockerコンテナ上にマウントさせるだけなら比較的すぐに始められる
    • vessel

      • こちらも同じくLaravel Docker環境
        • Laradoc と違って最低限の機能のみがデフォルトで設定されている
          • PHP 7.4, MySQL 5.7, Redis(最新), NodeJS(最新)、NPM、Yarn、Gulp
        • カスタマイズしたい場合は docker-compose.yml を修正
        • 自分のLaravelプロジェクト内にVesselの設定ファイルやDockerファイルが生成されるので、そういうのが嫌な人はLaradockでも良いかも
    • docker-laravel

    • Laravel Sail

      • どうやら4日前にリリースされた模様 現在v0.05(v0.01が5日前)
        • vesselの系統を組む、軽量ツールの模様
          • ついさっき知ったのであんまりためせていません
  • おまけ

参加者からのしつもんコーナー

参加時のアンケートの中からいくつかピックアップしました。今回拾えなかったものも別の機会に拾えればとおもいます!

  • PHP8についてMicrosoftでサポートしないという記事があったが、その点も踏まえて今後のPHPについての展望について
  • docker セッティングについての選択肢。vesselなど。
  • 俺の鉄板の開発環境を聞いてくれ!