TravisCI泊坞窗权限

我使用Docker来运行我的PHP应用程序。 现在我想让Travis CI来testing我的应用程序。 但是,我所有的构build失败,因为容器无法打开我的应用程序的/ temp目录中的文件。

我有数据容器:

FROM ubuntu COPY ./ /project VOLUME /project CMD ["true"] 

我用我自己的PHP fpm容器基于php:7.0-fpm – 只有安装了一些扩展。 同样的nginx。

我的docker写作看起来像这样

 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。

最后是我的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 

所有代码testing失败,因为应用程序无法写入/日志,无法打开/ temp中的文件。 这很有趣,因为它写了一些文件,但后来它不能打开它。

我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 

我敢肯定,我有不良的权限设置在Travis或容器,但我不知道如何解决它。

Travis提取的文件将由travis用户和组拥有,而在容器内运行的进程则希望活动用户成为所有者。 我有一个docker-compose文件,在我的Mac上运行正常,但在Travis上失败了。

对我来说,这是通过添加到我的.travis.yaml install步骤(编辑:你可能会希望它在你的before_script部分):

 install - docker-compose run --user='root' --entrypoint chown worker_test -R myuser:myuser . 

在UID / GID位上的这种写法是有帮助的: 了解docker中的用户文件所有权:如何避免更改链接卷的权限