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。