我正在使用cookiecutter-django项目模板,其中包括漂亮的docker-compose集成。但是,当我运行一个manage.py命令,通过docker-compose创建一个文件时,例如:
sudo docker-compose -f dev.yml run django python manage.py dumpdata --output ./myapp/fixtures/data.json
该文件归root:root
所有,因此我最初对主机文件系统没有写权限。我还在学习docker-compose,并且很难找到chown
任何创建的文件返回本地用户的最整洁方式。
我确实尝试在dev.yml的django服务中设置user:
标志,如此...
django:
user: $USER
但这并没有。
我还读到了关于使用
的内容django:
user: ${UID}
但是这也失败并带有警告
WARNING: The UID variable is not set. Defaulting to a blank string.
尽管echo $UID
返回了正确的值。因此,由于某种原因,env变量没有正确传递,但我不知道如何进行调试。可能相关:https://github.com/docker/compose/issues/2613
编辑:更多更新。
因此运行docker-compose -f dev.yml run django env
表示$ UID不存在。我尝试在entrypoint.sh
中分配它,但由于该文件是由root运行的,因此$ UID在运行时将为0。关于如何传递用户ID,我现在没有想法。