我使用Docker來運行我的PHP應用程序。現在我想讓Travis CI來測試我的應用程序。但是我的所有版本都失敗了,因爲容器無法打開我的應用的/ temp目錄中的文件。TravisCI Docker權限
我有數據容器:
FROM ubuntu
COPY ./ /project
VOLUME /project
CMD ["true"]
我用我自己的PHP FPM容器基於php:7.0-FPM - 只有安裝了一些擴展。 nginx也一樣。
我的搬運工撰寫看起來像這樣
version: '2'
services:
data:
build: ./
volumes:
- .:/project
command: "true"
nginx:
image: myNginx
ports:
- "80:80"
- "443:443"
volumes_from:
- data
links:
- php
php:
image: myPhp
ports:
- "9000:9000"
volumes_from:
- data
你可以看到,我使用的共享卷與主機。一切適用於我的本地機器(Windows),但不適用於Travis。
而且finaly我travis.yml
sudo: required
language: php
services:
- docker
before_script:
- docker-compose up --build -d
# Run firefox
- docker run -d -p 4444:4444 -p 5900:5900 --name firefox --link my_nginx:nginx --net myapp_default selenium/standalone-firefox-debug:2.53.0
script:
# Run Codeception
- docker run --rm --volumes-from my_data --link firefox --net myapp_default --name codeception codeception/codeception run accept
所有codeception測試,因爲應用程序無法寫入/日誌,不能在/臨時打開的文件失敗。這很有趣,因爲它寫了一些文件,但後來無法打開它。
我LS -la與結果:
# ./temp
drwxrwxr-x 3 travis travis 4096 Nov 4 15:55 .
drwxrwxr-x 14 travis travis 4096 Nov 4 15:56 ..
drwxr-xr-x 4 root root 4096 Nov 4 15:55 cache
-rw-rw-r-- 1 travis travis 14 Nov 4 15:49 .gitignore
# ./temp/cache
drwxr-xr-x 4 root root 4096 Nov 4 15:55 .
drwxrwxr-x 3 travis travis 4096 Nov 4 15:55 ..
drwxr-xr-x 2 root root 4096 Nov 4 15:55 Nette.Configurator
drwxr-xr-x 2 root root 4096 Nov 4 15:55 _Nette.RobotLoader
# ./temp/cache/Nette.Configurator
drwxr-xr-x 2 root root 4096 Nov 4 15:55 .
drwxr-xr-x 4 root root 4096 Nov 4 15:55 ..
-rw-r--r-- 1 root root 116093 Nov 4 15:55 Container_70d15d6361.php
-rw-r--r-- 1 root root 0 Nov 4 15:55 Container_70d15d6361.php.lock
-rw-r--r-- 1 root root 52913 Nov 4 15:55 Container_70d15d6361.php.meta
我是個很肯定,我有不好的權限特拉維斯或容器設置,但我不`噸知道如何解決它。