[英]Docker - What is the easiest way to launch phpunit testsuite
有沒有什么好的辦法(快)對搬運工推出PHPUnit的? 這是我以前做的:
docker-compose build
docker-compose up
docker ps
docker exec <container_id> phpunit --configuration /myproject/src/Tests/phpunit.xml --testsuite testAllSuites
注意:我不想使用 Volume 來同步文件,所以現在每次我必須重建項目..我試圖弄清楚如何在不指定 container_id 的情況下在特定容器上啟動測試..是否可能使用構建名稱啟動它?
我只是想出了一種在我的php-fpm容器上啟動 phpunit 測試的最簡單方法,這里是命令:
docker exec -it $(docker ps -n=-1 -q --filter name=my_php_container_name --format="{{.ID}}") phpunit --configuration /myproject/src/Tests/phpunit.xml --testsuite testAllSuites
所以現在每當我在這里更改代碼中的任何內容時,我都會執行以下操作:
docker-compose build
docker-compose up
docker exec -it $(docker ps -n=-1 -q --filter name=my_php_container_name --format="{{.ID}}") phpunit --configuration /myproject/src/Tests/phpunit.xml --testsuite testAllSuites
所以這意味着我不必顯示所有 docker 容器 (docker ps) 來獲取 id 並手動更新命令以在新容器 id 上啟動 phpunit。
運行此命令將僅返回 container_id :
docker ps -n=-1 -q --filter name=my_php_container_name --format="{{.ID}}"
這里有一些解釋:
-n=-1 : 顯示 n 個最后創建的容器
-q : 只顯示數字 ID
有關此處選項的更多詳細信息,請參閱docker 文檔
注意:舉個例子,如果我們將 phpunit.xml 文件移動到/myproject/ root 下,phpunit 命令可以更小,如果我們運行phpunit ,它將自動加載 phpunit.xml 並運行您的/Tests/下的所有測試...文件夾,命令將是:
docker exec -it $(docker ps -n=-1 -q --filter name=my_php_container_name --format="{{.ID}}") phpunit
希望這可以幫助某人...
無需對容器 id 進行復雜的查找,以下是如何在 docker-compose 中執行此操作的示例:
$ cat docker-compose.yml
version: '2'
volumes:
testvol:
driver: local
services:
testapp:
image: busybox
entrypoint: "top"
volumes:
- testvol:/data
testapp2:
image: busybox
entrypoint: "top"
volumes:
- testvol:/data
$ ../bin/docker-compose up -d
Creating test_testapp_1
Creating test_testapp2_1
$ ../bin/docker-compose ps
Name Command State Ports
-----------------------------------------
test_testapp2_1 top Up
test_testapp_1 top Up
$ ../bin/docker-compose exec testapp ls -l
total 40
drwxr-xr-x 2 root root 12288 Mar 18 16:39 bin
drwxr-xr-x 2 root root 4096 Jun 11 11:07 data
drwxr-xr-x 5 root root 360 Jun 13 11:50 dev
drwxr-xr-x 2 root root 4096 Jun 13 11:50 etc
drwxr-xr-x 2 nobody nogroup 4096 Mar 18 16:38 home
dr-xr-xr-x 224 root root 0 Jun 13 11:50 proc
drwxr-xr-x 2 root root 4096 Mar 18 16:38 root
dr-xr-xr-x 13 root root 0 Jun 13 11:50 sys
drwxrwxrwt 2 root root 4096 Mar 18 16:38 tmp
drwxr-xr-x 3 root root 4096 Mar 18 16:39 usr
drwxr-xr-x 4 root root 4096 Mar 18 16:39 var
您還可以利用 docker-compose 一致的容器命名(它在目錄名前面加上一個數字以進行縮放)來使用docker exec
在單個容器上運行docker exec
:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
069d40e3b6c7 busybox "top" 2 minutes ago Up 2 minutes test_testapp2_1
60e6d34d3b5a busybox "top" 2 minutes ago Up 2 minutes test_testapp_1
$ docker exec test_testapp_1 ls -l
total 40
drwxr-xr-x 2 root root 12288 Mar 18 16:39 bin
drwxr-xr-x 2 root root 4096 Jun 11 11:07 data
drwxr-xr-x 5 root root 360 Jun 13 11:50 dev
drwxr-xr-x 2 root root 4096 Jun 13 11:50 etc
drwxr-xr-x 2 nobody nogroup 4096 Mar 18 16:38 home
dr-xr-xr-x 226 root root 0 Jun 13 11:50 proc
drwxr-xr-x 2 root root 4096 Mar 18 16:38 root
dr-xr-xr-x 13 root root 0 Jun 13 11:50 sys
drwxrwxrwt 2 root root 4096 Mar 18 16:38 tmp
drwxr-xr-x 3 root root 4096 Mar 18 16:39 usr
drwxr-xr-x 4 root root 4096 Mar 18 16:39 var
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.