gpt4 book ai didi

symfony - 使用主机挂载卷的 Docker 权限开发环境

转载 作者:IT老高 更新时间:2023-10-28 21:26:20 25 4
gpt4 key购买 nike

我正在使用 docker-compose 为一堆 symfony2 应用程序设置一个可移植的开发环境(尽管我想做的事情都不是专门针对 symfony 的)。我决定将本地计算机上的源文件作为数据卷公开,并在 docker 中包含所有其他依赖项。这样开发人员可以在本地文件系统上进行编辑。

一切都很好,除了运行应用程序后,我的缓存和日志文件以及 composer 在/vendor 目录中创建的文件现在归 root 所有。

我在这里阅读了有关此问题和一些可能的方法:

Changing permissions of added file to a Docker volume

但我不能完全梳理出我必须在 docker-compose.yml 文件中进行哪些更改,以便当我的 symphony 容器以 docker-compose up 启动时创建的任何文件在主机上拥有用户的权限。

我发布文件以供引用,worker 是 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"

最佳答案

其中一个解决方案是在您的容器内部执行命令。对于过去遇到的同一问题,我尝试了多种解决方法。我发现在容器内执行命令对用户最友好。

示例命令: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

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

关于symfony - 使用主机挂载卷的 Docker 权限开发环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com