Docker - 启动phpunit测试套件最简单的方法是什么

问题描述:

有没有什么好方法(更快)启动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 ..是否可以使用构建名称启动它?

我只是想出一个最简单的方式对我的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

如何使用容器名称?我尝试了不同的命令来使用容器名称,它不工作...你能给我一个使用命令的例子吗?我仍然是码头初学者,我可能会错过一些技巧...... –

不需要做容器的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