【发布时间】:2016-12-31 21:42:23
【问题描述】:
遵循@sveneisenschmidt 的解决方法,该解决方法利用容器中的 rsync 来加速 OSX 上的 Symfony: https://forums.docker.com/t/how-to-speed-up-shared-folders/9322/15
我似乎有 Symfony 以这种方式运行,但我遇到了 Web 服务器的权限问题,我不确定如何在 Docker 中解决。
我可以通过我的 php-fom 实例中的 CLI 清除缓存 (cache:clear --env=prod --no-debug)
但问题是当我通过 app_dev.php 查看 Symfony 时,nginx 似乎无法写入缓存/日志目录:
无法写入缓存目录(/app/app/cache/dev)
我对 rsync 如何适应权限感到困惑,但似乎 nginx 需要的权限比它拥有的更多。有关如何解决此问题的任何想法?
docker_compose.yml
# Web server
nginx:
container_name: insight_nginx
build: docker/nginx
ports:
- "80:80"
links:
- php
- sync:sync
volumes_from:
- sync
# Data alias
data:
container_name: insight_data
build: docker/data/.
# Database
db:
container_name: insight_db
build: docker/db
ports:
- 3306:3306
volumes:
- "./.data/db:/var/lib/mysql"
- ./db-dump:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: root
# Application server
php:
container_name: insight_php
build: docker/php-fpm
external_links:
- insight_db:docker-mysql
environment:
DB_HOST: docker-mysql
# Syncing
volumes_from:
- sync
links:
- sync:sync
# Synchronization
### Symfony rsync workaround from here: https://forums.docker.com/t/how-to-speed-up-shared-folders/9322/15
sync:
container_name: insight_sync
build: docker/sync
command: "lsyncd -delay 1 -nodaemon -rsync /src /app"
volumes:
- /app
- "./:/src"
working_dir: /src
stdin_open: true
tty: true
nginx/Dockerfile
FROM nginx:latest
COPY symfony3.conf /etc/nginx/conf.d/symfony3.conf
#RUN usermod -u 1000 www-data
#RUN chown -R www-data:www-data /app/cache
#RUN chown -R www-data:www-data /app/logs
php-fpm/Dockerfile
FROM pvlltvk/ubuntu-trusty-php-fpm-5.6
RUN apt-get install -y \
php5-curl \
php5-sybase \
freetds-dev \
libxml2-dev
ADD freetds.conf /etc/freetds/freetds.conf
RUN echo 'alias sf="php /app/app/console"' >> ~/.bashrc
#RUN chmod -R 0777 /tmp/symfony/logs
#RUN chmod -R 0777 /tmp/symfony/cache
#ADD start.sh /start.sh
#RUN chmod +x /start.sh
WORKDIR /app
同步/Dockerfile
FROM ubuntu:16.04
RUN PACKAGES="\
rsync \
lsyncd \
" && \
apt-get update && \
apt-get install -y $PACKAGES && \
apt-get autoremove --purge -y && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
#RUN rm -rf /src/app/cache/* \
# rm -rf /src/app/logs/* \
# sudo chmod +R 777 /src/app/cache /src/app/logs
#RUN chmod -R 0777 ./app/logs
#RUN chmod -R 0777 ./app/cache
【问题讨论】:
标签: symfony nginx docker rsync