DDEV で Ibexa DXP を簡単セットアップ

[Install with DDEV](https://doc.ibexa.co/en/latest/getting_started/install_with_ddev/) を参考に、PHP のローカル開発環境管理ツール DDEV で Ibexa DXP のインストールを簡単に実施する手順を解説します。


## DDEV のセットアップ
[Get Started | DDEV](https://ddev.com/get-started/) を参考に DDEV をインストールします。

### Docker プロバイダーのセットアップ
DDEV をインストールする前に Docker プロバイダーが必要になります。[^docker-provider]
サポートされている Docker プロバイダーは以下の通りです。
<table>
<tr><td>OrbStack</td><td>推奨、インストールが最も簡単、パフォーマンスが最も高い、商用、オープンソースではない</td></tr>
<tr><td>Lima</td><td>フリー、オープンソース。</td></tr>
<tr><td>Docker Desktop</td><td>おなじみ、人気、オープンソースではない、ライセンスが必要な場合がある、不安定な場合がある。</td></tr>
<tr><td>Rancher Desktop</td><td>無料、オープンソース、インストールが簡単、起動が遅い。</td></tr>
<tr><td>Colima</td><td>無料、オープンソース。</td></tr>
</table>

[^docker-provider]: <q>You’ll need a Docker provider on your system before you can install DDEV.</q><cite>[Docker Installation - DDEV Docs](https://ddev.readthedocs.io/en/stable/users/install/docker-installation/) - <i>ddev.readthedocs.io</i></cite>

#### OrbStack のインストール
```zsh
brew install docker orbstack
```

#### Lima のインストール
```zsh
brew install docker lima && \
limactl create --name=default --vm-type=vz --mount-type=virtiofs --mount-writable --memory=6 --cpus=4 --disk=100 template://docker && \
docker context create lima-default --docker "host=unix://$HOME/.lima/default/sock/docker.sock" && \
docker context use lima-default && \
limactl start && \
limactl list
```

#### Docker Desktop のインストール
```zsh
brew install --cask docker
```
:::note
Docker Desktop が現時点でサポートするのは macOS の Sonoma、 Ventura、Monterey です。 [^docker-desktop]
:::

[^docker-desktop]: <q>Docker supports Docker Desktop on the most recent versions of macOS. That is, the current release of macOS and the previous two releases. As new major versions of macOS are made generally available, Docker stops supporting the oldest version and supports the newest version of macOS (in addition to the previous two releases).</q><cite>[Install Docker Desktop on Mac | Docker Docs](https://docs.docker.com/desktop/install/mac-install/) - <i>docs.docker.com</i></cite>


### DDEV のインストール
```bash
brew install ddev/ddev/ddev
ddev -v
```

### mkcert のインストール
```bash
mkcert -install
```

:::note warn
以下のエラーメッセージが出た場合、 `brew install nss` を実行してから `mkcert -install` を再実行します。
> <samp>
> The local CA is now installed in the system trust store! ⚡️
> Warning: "certutil" is not available, so the CA can't be automatically installed in Firefox! ⚠️
> Install "certutil" with "brew install nss" and re-run "mkcert -install" 👈
> </samp>
:::

:::note
Homebrew を利用せずに、以下のスクリプトを実行してインストールすることも可能です。
```zsh
curl -fsSL https://ddev.com/install.sh | bash
```
:::

## Ibexa OSS のインストール
準備が整ったら、Ibexa DXP のオープンソース版である [Ibexa OSS](https://github.com/ibexa/oss) をインストールします。
```zsh
mkdir my-ibexa && cd $_ && \
ddev config \
 --project-type=php \
 --php-version 8.2 \
 --nodejs-version 22 \
 --database=mysql:8.0 \
 --docroot=public \
 --create-docroot && \
 --web-environment-add DATABASE_URL=mysql://db:db@db:3306/db && \
 --mutagen-enabled && \
ddev start && \
ddev composer create ibexa/oss-skeleton && \
ddev php bin/console ibexa:install && \
ddev php bin/console ibexa:graphql:generate-schema && \
ddev launch /admin/login
```
:::note
* lcobucci/clock が PHP 8.2 までしか対応していないため、 `--php-version` は `8.2` を指定します。
* DDEV は MySQL 8.0 までしか対応していないため、 `--database` は `mysql:8.0` を指定します。`8.4` や `9.0` を指定するとインストールに失敗します。 [^mysql-version]
:::
[^mysql-version]: <q>The following database types are currently supported: MySQL 5.5-8.0</q><cite>[Database Server Types - DDEV Docs](https://ddev.readthedocs.io/en/stable/users/extend/database-types/) - <i>ddev.readthedocs.io</i></cite>

### キャッシュクリア
```bash
ddev php bin/console cache:clear
```
上記コマンドで Ibexa のキャッシュをクリアできます。

### コンソールにログイン
```bash
ddev ssh
```
コンソールにログインしたい場合は上記コマンドでログインします。