我正在使用docker镜像进行项目的功能测试。这个图像基于alpine,并且由supervisord运行nginx和php-fpm服务,我的功能测试会停止对这个docker实例的调用。
基本上是.travis.yml:
图像创建正常,容器已启动。我添加了一些调试信息来验证这一点:
>> docker run -d --rm --name resttemplate-test-instance -v /home/travis/build/byjg/php-rest-template:/srv/web -p "127.0.0.1:80:80" resttemplate-test
f3986de1c86629123896a0aa7f6ec407f617f261383c3b6a358e9dfcd3d06d77
Exit status : 0
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3986de1c866 resttemplate-test "docker-php-entryp..." Less than a second ago Up Less than a second 443/tcp, 127.0.0.1:80->80/tcp, 9000/tcp resttemplate-test-instance
$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' resttemplate-test-instance
172.17.0.2
但是当PHPUnit运行时,我得到了每个测试的跟随消息:
cURL error 56: Recv failure: Connection reset by peer (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
如果我逐行重复我当地环境中.travis.yml中存在的所有步骤,一切正常。此错误仅在travis中发生。
以下是构建失败的链接: https://travis-ci.org/byjg/php-rest-template/jobs/305476720#L728
这里有我的.travis.yml:
sudo: required
language: php
php:
- "7.1"
- "7.0"
- "5.6"
env:
- APPLICATION_ENV=test
services:
- docker
install:
- composer install
- composer restdocs
- composer migrate -- reset --yes
- composer build
- docker ps -a
- docker inspect resttemplate-test-instance
- docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' resttemplate-test-instance
- sudo chown 82:82 src/sample.db
- sudo chown 82:82 src/
script:
- phpunit
答案 0 :(得分:0)
进入互联网我发现了这个问题:https://github.com/travis-ci/travis-ci/issues/6461
建议通过添加" sleep 15"来等待docker实例启动并运行。它奏效了!