Docker权限开发环境使用主机装入卷

我正在使用docker-compose来为一堆symfony2应用程序设置一个可移植的开发环境(尽pipe我没有想做的事情只是针对symfony)。 我决定把本地机器上的源文件公开为docker中所有其他依赖项的数据卷。 这样开发人员可以在本地文件系统上进行编辑。

一切都很好,除了运行应用程序之后,我的caching和日志文件以及由/ vendor目录中的composer创build的文件现在由root拥有。

我已阅读关于这个问题和一些可能的方法在这里:

将添加的文件的权限更改为Docker卷

但我不能完全梳理我在docker-compose.yml文件中所做的更改,以便当我的symphony容器以docker开头时 – 编写任何创build的文件都具有主机上用户的权限。

我发布的文件供参考,工作人员是哪里的PHP等生活:

source: image: symfony/worker-dev volumes: - $PWD:/var/www/app mongodb: image: mongo:2.4 ports: - "27017:27017" volumes_from: - source worker: image: symfony/worker-dev ports: - "80:80" - mongodb volumes_from: - source volumes: - "tmp/:/var/log/nginx" 

其中一个解决scheme是你的容器中执行命令。 我已经尝试了多个解决scheme来解决我过去遇到的问题。 我发现执行容器内的命令是最方便用户的。

示例命令: docker-compose run CONTAINER_NAME php bin/console cache:clear 。 您可以使用makeant或任何现代工具来保持命令简短。

Makefile例子:

 all: | build run test build: | docker-compose-build run: | composer-install clear-cache ############## docker compose docker-compose-build: docker-compose build ############## composer composer-install: docker-compose run app composer install composer-update: docker-compose run app composer update ############## cache clear-cache: docker-compose run app php bin/console cache:clear docker-set-permissions: docker-compose run app chown -R www-data:www-data var/logs docker-compose run app chown -R www-data:www-data var/cache ############## test test: docker-compose run app php bin/phpunit 

或者,您可以引入包含环境variables的.env文件,然后使用其中一个variables在Docker容器中运行usermod命令。