在Travis-ci内部创build的Docker容器不能提供NGINX端口进行testing
我正在使用Docker镜像来进行我的项目的functiontesting。 这个图像是基于高山,并有supervisord运行的nginx和php-fpm服务,我的functiontestingrest调用这个docker实例。
基本上.travis.yml:
- build立图像
- 启动容器
- 调用PHPUnit来testing;
图像创build正常,容器是UP的。 我添加了一些debugging信息来validation这一点:
>> 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运行时,我得到了每个testing的后续消息:
cURL error 56: Recv failure: Connection reset by peer (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
如果我一行一行地重复在我的本地环境.travis.yml中存在的所有步骤一切正常。 这个错误只发生在特拉维斯。
以下是构build失败的链接: 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
挖到互联网我发现这个问题: https : //github.com/travis-ci/travis-ci/issues/6461
有一个build议,通过添加“睡眠15”,等待docker实例开始运行。 有效!
- Docker / NodeJS:“exec:\” – d \“:在$ PATH中找不到可执行文件”
- 如何让Apache和Tomcat Docker容器相互通话?
- Docker for Windows和Symfony 4中的NGINX 502错误网关错误
- Docker在服务器2016虚拟机上
- 如何获得docker容器的内容(Python / Pandas)
- dockerbuild设内存不足,但似乎有足够的内存可用
- Randocker容器`–restart always`重新启动服务器,容器/镜像没有重启
- 非法指令4是什么意思与docker在苹果?
- Dockerfile ADD https:// zzzz x509:由未知权限签名的证书