簡體   English   中英

Docker - 啟動 phpunit 測試套件的最簡單方法是什么

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM