Symfony CLIを使ってローカルWebサーバを起動すると、プロジェクト内にある compose.yaml
を判別し、Dockerコンテナを自動起動してくれます。起動すると、以下の様にプロファイラに Docker Compose
, Env Vars
が起動中な状態となります。
Symfony CLIでローカルWebサーバを起動すると、Dockerの内容を解釈して、DBの接続情報などを環境変数として追記してくれます。詳しくはこちら。
ところが、OrbStackを利用してDocker環境を用意している場合、同じ様にしていてもコンテナが起動せず環境変数も追記されません。
これは、Symfony CLIが DOCKER_HOST
の値を使って情報を取得しているからです。 docker context ls
を起動すると、以下のようになっていると思います。
% docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux Docker Desktop unix:///Users/{ユーザ名}/.docker/run/docker.sock
orbstack * OrbStack unix:///Users/{ユーザ名}/.orbstack/run/docker.sock
OrbStackを使用するようになっていますが、 DOCKER_HOST
には default
が使われています。
なお、この unix:///var/run/docker.sock
は、 orbstackのdocker.sockへのシンボリックリンクとなっていますが、どうもこれがうまく認識されていないようです。
そこで、 .zshrc
に以下を追記します。
export DOCKER_HOST=unix:///Users/{ユーザ名}/.orbstack/run/docker.sock
これにより、Symfony CLIが DOCKER_HOST
を介して正しい情報を取得することができ、ローカルWebサーバ起動時に、コンテナも起動する様になります。
Symfony CLIやOrbStacknアップデートによって、上記対応は不要になる可能性があります。