2016-06-07 38 views
1

有沒有什麼好方法(更快)啓動phpunit on docker?這裏是我用來做:Docker - 啓動phpunit測試套件最簡單的方法是什麼

docker-compose build 
docker-compose up 
docker ps 
docker exec <container_id> phpunit --configuration /myproject/src/Tests/phpunit.xml --testsuite testAllSuites 

注意:我不想使用批量同步文件,所以現在每次我必須重建項目..和我試圖找出如何在特定容器上啓動測試而不指定containe_id ..是否可以使用構建名稱啓動它?

回答

0

我只是想出一個最簡單的方式對我的PHP-FPM容器推出PHPUnit測試,這裏的命令:

docker exec $(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 $(docker ps -n=-1 -q --filter name=my_php_container_name --format="{{.ID}}") phpunit --configuration /myproject/src/Tests/phpunit.xml --testsuite testAllSuites 

所以這意味着我不必顯示所有的碼頭集裝箱(docker ps)來獲取id並手動更新命令以在新的集裝箱id上啓動phpunit。

辦刊此命令西港島線僅返回CONTAINER_ID:

docker ps -n=-1 -q --filter name=my_php_container_name --format="{{.ID}}" 

這裏一些解釋:

-N = -1:表演n上次ceated容器

-q:只顯示數字ID

有關opti的更多詳細信息ONS這裏docker documentation

注:只是爲了舉例來說,如果我們移動phpunit.xml文件剛下/myproject的/根PHPUnit命令可以更小,如果我們運行PHPUnit的它會自動加載的PHPUnit .XML和在你的/測試運行所有測試/ ...文件夾,該命令將是:

docker exec $(docker ps -n=-1 -q --filter name=my_php_container_name --format="{{.ID}}") phpunit 

編輯:

下水測試throught PHPstorm另一個好辦法: Running tests in PHPStorm with PHPUnit and Docker

希望這可以幫助別人...

+0

爲什麼不使用的容器名稱,而不是ID的? docker-compose應該給它一個可預測的名字,你在過濾器中使用它。 – BMitch

+0

如何使用容器名稱?我嘗試了不同的命令來使用容器名稱,它不工作...你能給我一個使用命令的例子嗎?我仍然是碼頭初學者,我可能會錯過一些技巧...... –

1

不需要做容器的id一個複雜的查詢,這裏有一個如何可以泊塢窗,撰寫內做到這一點的例子:

$ 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-組成(它預先將目錄名和追加用於縮放數)與docker exec運行在單個容器上的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 
相關問題