我的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
如何设置正确的权限来运行它?
答案 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