Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php TravisCI Docker权限_Php_Docker_File Permissions_Travis Ci - Fatal编程技术网

Php TravisCI Docker权限

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

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

我有一个数据容器:

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 .