docker-compose挂载目录不会重命名文件夹

时间:2019-02-22 19:49:29

标签: php docker docker-compose

因此,我已经有了一个要在目录中重命名的文件夹。我放在该挂载目录中的所有其他文件夹都说:

  

警告:   重命名(/ app / public / CoverImages / S3-Uploaded / subfolder-for-depth / 2019-01-15-Uploaded,/ app / public / CoverImages / S3-Uploaded / subfolder-for-depth / 2019-01-15-已上载AWS):   权限在/app/src/S3CoverImages.php中的第260行被拒绝

我的php代码如下:

if(is_dir($dirPath)) {
            $success = rename(rtrim($dirPath, " -/"), rtrim($dirPath, " -/") . "-AWS");

我的dockerfile权限代码如下:

RUN chown www-data:www-data /usr/local/etc/php-fpm.conf && \
  chown -R www-data:www-data /app && \
  chmod -R 755 /app && \
  chown -R www-data:www-data /var/www && \
  chmod +x /usr/local/bin/start.sh; sync

在docker-compose.yml中,它安装了所需的目录:

version: '3.4'
services:
    nginx:
        image: americanreading/someproject:dev
        restart: on-failure:3
        ports:
          - 8001:8080
    php:
        image: americanreading/bisapi-php:dev
        environment:
            #lots of server details here. 
        volumes:
            - /mnt/coverimages/S3-Uploaded/subfolder-for-depth:/app/public/CoverImages/S3-Uploaded/subfolder-for-depth/

我还有其他需要确保放入此挂载目录的任何文件夹都具有php权限来重命名该文件夹的信息吗?有什么证据表明我目前不在做什么?

几乎忘了,这是我们在bash中查询的当前权限:

arcit@arcvm13:~/arcbis-dev$ docker-compose run --rm php bash
www-data@9a78e9799427:/app$ ls -la /app/public/CoverImages/S3-Uploaded/subfolder-for-depth/
total 16
drwxrwxrwx 2 root root 4096 Feb 25 14:31 .
drwxr-xr-x 3 root root 4096 Feb 25 14:38 ..
-rwxrwxrwx 1 root root 6148 Feb 25 14:32 .DS_Store
drwxrwxrwx 2 root root    0 Oct 20  2015 2010-02-15
drwxrwxrwx 2 root root    0 Feb 25 14:30 2019-01-15-Uploaded
drwxrwxrwx 2 root root    0 Feb 25 14:31 2019-02-07-Uploaded-AWS
drwxrwxrwx 2 root root    0 Feb 22 16:24 2019-02-18

这是深度子文件夹中的ls -la本身:

drwx------@ 1 toddcoulson  staff  16384 Oct 20  2015 2010-02-15
drwx------@ 1 toddcoulson  staff  16384 Feb 25 09:30 2019-01-15-Uploaded
drwx------  1 toddcoulson  staff  16384 Feb 25 09:31 2019-02-07-Uploaded-AWS
drwx------@ 1 toddcoulson  staff  16384 Feb 22 11:24 2019-02-18

1 个答案:

答案 0 :(得分:1)

该卷是在运行容器时创建的,而不是在构建容器时创建的。默认情况下,该目录的权限为root

这里的另一个问题是您将卷绑定到主机路径“ / mnt / coverimages / S3-Uploaded / sub-folder-for-depth” 。 这样该目录将具有主机的权限(例如,用户1000)。 一种解决方案是在Dockerfile中为该用户添加www-data组。