私のプロジェクトの機能テストにドッカーイメージを使用しています。この画像はアルパインに基づいており、スーパーバイザーによって実行されているnginxとphp-fpmサービスを持っています。私の機能テストは、このドッカーインスタンスへの呼び出しを休止します。travis-ci内に作成されたドッカーコンテナがテスト用のNGINXポートに対応していません
基本的に.travis.yml:
-
がコンテナ
- コールテストするためにはPHPUnitを開始
- イメージを構築します。
画像が細かく作成され、コンテナがUPしています。私はこれを確認するためにいくつかのデバッグ情報を追加しました:
>> 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