在 docker 上启动 phpunit 有什么好方法(更快)吗?这就是我以前做的事情:
\|(?=\||$|\n)
注意:我不想使用Volume来同步文件,所以每次我都需要重建项目..而我正试图弄清楚如何启动测试没有指定containe_id的特定容器..是否可以使用构建名称来启动它?
答案 0 :(得分:1)
我只想找出一个在我的 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 :显示上次停用的容器
-q :仅显示数字ID
选项的更多详情注意:例如,如果我们在 / myproject / root下移动phpunit.xml文件,phpunit命令可以更小,如果我们运行 phpunit 它将自动加载phpunit.xml并在 / Tests /...文件夹下运行所有测试,命令将为:
docker exec -it $(docker ps -n=-1 -q --filter name=my_php_container_name --format="{{.ID}}") phpunit
修改:
通过PHPstorm启动测试的另一个好方法: Running tests in PHPStorm with PHPUnit and Docker
希望这可以帮助别人......
答案 1 :(得分:1)
无需对容器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
在各个容器上运行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