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
希望这可以帮助别人...
答
不需要做容器的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
为什么不使用的容器名称,而不是ID的? docker-compose应该给它一个可预测的名字,你在过滤器中使用它。 – BMitch
如何使用容器名称?我尝试了不同的命令来使用容器名称,它不工作...你能给我一个使用命令的例子吗?我仍然是码头初学者,我可能会错过一些技巧...... –