在travis-ci中创建的Docker容器不会为NGINX端口提供测试

时间:2017-11-21 21:24:18

标签: docker travis-ci

我正在使用docker镜像进行项目的功能测试。这个图像基于alpine,并且由supervisord运行nginx和php-fpm服务,我的功能测试会停止对这个docker实例的调用。

基本上是.travis.yml:

  • 构建图像
  • 启动容器
  • 调用PHPUnit进行测试;

图像创建正常,容器已启动。我添加了一些调试信息来验证这一点:

>> 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

1 个答案:

答案 0 :(得分:0)

进入互联网我发现了这个问题:https://github.com/travis-ci/travis-ci/issues/6461

建议通过添加" sleep 15"来等待docker实例启动并运行。它奏效了!