我正在使用 cookiecutter-django 项目模板,其中包括很好的 docker-compose 集成。但是,当我运行通过 docker-compose 创建文件的 manage.py 命令时,例如:
sudo docker-compose -f dev.yml run django python manage.py dumpdata --output ./myapp/fixtures/data.json
该文件归所有人所有,root:root
因此我最初对主机文件系统没有写权限。我仍在学习 docker-compose 并且正在努力寻找将chown
任何创建的文件返回给本地用户的最整洁的方法。
我确实尝试user:
在 dev.yml 中的 django 服务中设置标志,就像这样..
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。