Autorisations de cache Symfony avec docker avec nginx rsync

Suite à la solution de contournement de @ sveneisenschmidt qui utilise rsync dans un conteneur pour accélérer Symfony sur OSX: https://forums.docker.com/t/how-to-speed-up-shared-folders/9322/15

Il me semble que Symfony fonctionne de cette façon, mais je suis confronté à des problèmes de permissions avec le serveur Web que je ne suis pas sûr de savoir comment résoudre dans Docker.

Je peux effacer le cache via l’interface de ligne de commande de mon instance php-fom (cache: clear –env = prod –no-debug)

Mais le problème est que lorsque je visualise Symfony via app_dev.php, nginx ne semble pas pouvoir écrire dans les répertoires cache / logs:

Impossible d’écrire dans le répertoire de cache (/ app / app / cache / dev)

Je suis confus quant à la manière dont rsync correspond aux permissions, mais il semble que nginx ait besoin de plus d’permissions que lui. Des idées sur la façon de résoudre ce problème?

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 

sync / 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 

L’instruction CMD vous permet de définir une commande par défaut, qui ne sera exécutée que lorsque vous exécuterez le conteneur sans spécifier de commande. *

RUN exécute la ou les commandes que vous donnez dans un nouveau calque et crée une nouvelle image. **

essayer

CMD chown -R www-data:www-data /var/www && nginx

* http://goinbigdata.com/docker-run-vs-cmd-vs-entrypoint/

** https://til.codes/docker-run-vs-cmd-vs-entrypoint/