【发布时间】:2016-05-09 05:25:12
【问题描述】:
我正在尝试使用 docker 设置 Symfony 项目,但它总是返回与“缓存”目录中的权限相关的错误。
我已经尝试了所有方法,但似乎找不到解决方案。 问题是,即使我的服务器和 php-fpm 用户设置为 www-data,缓存文件夹总是由“root”所有者创建。也许是因为 php-cli 用户?
我尝试过: - setfacl : 不要使用 docker - chown / chmod 到 www-data:也没有工作。它可能会在开始时正确更改所有者,但在其他地方会出错。
docker-compose.yml
app:
build: .
command: "tail -f /dev/null" # keep the application container running
links:
- mysql
volumes:
- .:/var/www
nginx:
build: docker/nginx/
ports:
- 8090:80
links:
- php-fpm
volumes_from:
- app
php-fpm:
build: docker/fpm
ports:
- 9000:9000
volumes_from:
- app
mysql:
image: mysql:5.7
volumes:
- ./docker/data/mysql:/var/lib/mysql
我的应用 Dockerfile:
FROM php:5.6-cli
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
git \
vim \
curl \
php5-json \
php5-intl \
php5-mcrypt \
php5-mysql \
php5-apcu \
php5-gd
ADD /docker/fpm/php.ini /usr/local/etc/php/
# install composer.
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
RUN usermod -u 1000 www-data
ADD . /var/www
WORKDIR /var/www
PHP-fpm Dockerfile
FROM php:5.6-fpm
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
php5-json \
php5-intl \
php5-mcrypt \
php5-mysql \
php5-apcu \
php5-gd
RUN apt-get install -y php5-xdebug
ADD xdebug.ini /usr/local/etc/php/conf.d/
ADD php.ini /usr/local/etc/php/
EXPOSE 9000
WORKDIR /var/www
CMD ["php-fpm"]
Nginx Dockerfile
FROM nginx:latest
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y git vim
ADD nginx.conf /etc/nginx/
ADD symfony.conf /etc/nginx/sites-available/
RUN mkdir -p /etc/nginx/sites-enabled
RUN ln -s /etc/nginx/sites-available/symfony.conf /etc/nginx/sites-enabled/
RUN usermod -u 1000 www-data
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["nginx"]
我没有想法。有什么建议? 谢谢。
【问题讨论】:
-
在你的 Dockerfile 中添加一个非特权用户和一个
USER xxx -
这适用于我们在 mac/windows/ubuntu stackoverflow.com/questions/34949083/…
标签: php symfony docker file-permissions docker-compose