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
。 您可以使用make
, ant
或任何现代工具来保持命令简短。
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
命令。