如何设置权限以缓存和记录symfony docker容器

时间:2019-03-28 16:18:30

标签: php symfony docker nginx

我的Symfony应用程序有一个Dockerfile,但是该容器没有对缓存和日志目录的写权限。

我尝试使用Symfony文档获取权限,但无法正常工作。我已经将容器用户设置为root,但是问题是相同的。

这是我的Dockerfile

FROM trafex/alpine-nginx-php7:ba1dd422

RUN apk --update add git php7-sockets php7-bcmath php7-pdo_mysql php7-pdo && rm /var/cache/apk/* \
    && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

COPY ./docker/nginx/nginx.conf /etc/nginx/nginx.conf

COPY . /var/www/html

RUN composer install \
     --ignore-platform-reqs \
        --no-interaction \
        --no-plugins \
        --no-scripts \
        --prefer-dist

EXPOSE 8080

如何设置正确的权限来运行它?

1 个答案:

答案 0 :(得分:3)

在docker映像的Dockerfile中,似乎同时运行NGINX和PHP-FPM的用户为nobody

因此您应该能够使所有用户都拥有对这些文件的权限

FROM trafex/alpine-nginx-php7:ba1dd422

RUN apk --update add git php7-sockets php7-bcmath php7-pdo_mysql php7-pdo && rm /var/cache/apk/* \
    && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

COPY ./docker/nginx/nginx.conf /etc/nginx/nginx.conf

COPY . /var/www/html
RUN chown -R nobody:nobody /var/www/html

RUN composer install \
     --ignore-platform-reqs \
        --no-interaction \
        --no-plugins \
        --no-scripts \
        --prefer-dist

EXPOSE 8080

但更好的是,您应该使用与they use in the original image相同的语法

FROM trafex/alpine-nginx-php7:ba1dd422

RUN apk --update add git php7-sockets php7-bcmath php7-pdo_mysql php7-pdo && rm /var/cache/apk/* \
    && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

COPY ./docker/nginx/nginx.conf /etc/nginx/nginx.conf

COPY --chown=nobody . /var/www/html

RUN composer install \
     --ignore-platform-reqs \
        --no-interaction \
        --no-plugins \
        --no-scripts \
        --prefer-dist

EXPOSE 8080