Php TravisCI Docker权限
我使用Docker运行我的PHP应用程序。现在我想让Travis CI测试我的应用程序。但我的所有构建都失败了,因为容器无法打开我应用程序的/temp目录中的文件 我有一个数据容器:Php TravisCI Docker权限,php,docker,file-permissions,travis-ci,Php,Docker,File Permissions,Travis Ci,我使用Docker运行我的PHP应用程序。现在我想让Travis CI测试我的应用程序。但我的所有构建都失败了,因为容器无法打开我应用程序的/temp目录中的文件 我有一个数据容器: FROM ubuntu COPY ./ /project VOLUME /project CMD ["true"] 我使用我自己的基于PHP的PHP fpm容器:7.0-fpm-只安装了一些扩展。nginx也一样 我的码头工人是这样的 version: '2' services: data: bu
FROM ubuntu
COPY ./ /project
VOLUME /project
CMD ["true"]
我使用我自己的基于PHP的PHP fpm容器: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上不行
最后是我的特拉维斯
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测试都失败,因为应用程序无法写入/log并且无法在/temp中打开文件。它很有趣,因为它写了一些文件,但后来无法打开
I 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上失败
对我来说,这是通过将其添加到my.travis.yaml
中的安装步骤来解决的(编辑:您可能希望它出现在脚本之前的部分):
UID/GID位上的写操作非常有用:
install
- docker-compose run --user='root' --entrypoint chown worker_test -R myuser:myuser .