PhpStorm + Docker Compose Run Test
用 Docker Compose 啟動程式所需的 service 並且以 docker compose 的 container 執行 test。
Docker
先在 project 裡增加 Dockerfile:
1 | FROM php:8.0-cli |
這邊會安裝 libzip-dev、libpng-dev、libjpeg62-turbo-dev 並設定與安裝 php extension gd 是為了 image upload 的 test。
build 出 image 並且上 tag:
1 | $ docker build . |
Docker Compose
增加 docker-compose.yml:
1 | version: "3" |
.env.testing
1 | DB_CONNECTION=pgsql |
PhpStorm Setting
Docker

因為 OS 是 Linux 所以選 Unix socket。
Troubleshooting
如果 connection 連不上,先檢查有沒有啟動 Docker daemon,有的話看看 user 是不是在 docker 這個 group 裡,沒有在 group 裡就把 user 加進 docker group、logout、login、重新啟動 PhpStorm 再試一次。
CLI Interpreter

按左上角的 + 選 From Docker。

使用 Docker-compose 並且設定 config file 以及 service。設完可以看到第一張圖的樣子。

CLI Interpreter 選擇剛剛新增的 interpreter。
Run/Debug Configurations
service

按左上角的 + 選 Docker-compose。
設定 Server 以及 Compose file path。

Run service

可以在 service window 看到跑起來的 container。
點 container 可以看到 log 啊 properties 等等資訊。
test

設定 test,使用 default interpreter。

Run test 可以看到是用 docker compose 執行。
About Docker Network
這裡只記錄一點點 docker network 有關的東西。
在 default 下,docker compose 裡的 container 的 network 是 bridge mode。
可以用 docker network ls 看到現在有哪些 network。
再用 docker network inspect NETWORK_NAME 可以看到該 network 的詳細資料,在其中 Containers 可以看到 container 被分配的 IP address。