【问题标题】:Opening file from Docker Container in Python/Django Web App在 Python/Django Web App 中从 Docker 容器打开文件
【发布时间】:2016-08-15 06:38:32
【问题描述】:

我已经创建了一个指定的 docker 容器

WORKDIR /usr/src/app

在我的 Django Web 应用程序中,我尝试访问

file_path = '/usr/src/app/management_app/mock/printable-profile.json'

File "/usr/src/app/management_app/urls/__init__.py", line 5, in <module>
app_1  |     from ..views import views
app_1  |   File "/usr/src/app/management_app/views/views.py", line 13, in <module>
app_1  |     json_data = open(file_path)
app_1  | FileNotFoundError: [Errno 2] No such file or directory: '/usr/src/app/management_app/mock/printable-profile.json'

容器已正确构建。我通过创建快照并运行访问容器文件系统

$ docker run -t -i mgmtsnapshot /bin/bash

我可以确认文件存在于所需的路径中。在 docker 容器内调用 open() 有问题吗?或者还有什么导致file not found 错误?

【问题讨论】:

    标签: python django docker


    【解决方案1】:

    您是否从主机挂载 /usr/src/app 作为卷?如果是,您可能宁愿遇到权限问题,因为主机强制执行 uid/guid/permissions 并且如果您的 python 应用程序在用户 X 下运行,但主机定义 uid=14 不是 userX,还有u=r,g=,o= 作为权限,你不能访问它。确保您确实通过丢失它们(丑陋)来修复主机上的权限问题,或者使用可以在同步时为您提供用户所有权映射的工具,例如http://docker-sync.io

    【讨论】:

    • 谢谢,我一直在寻找可能的权限限制作为原因。我昨天发现,如果我拆除 docker 容器,删除图像,组合 rm,然后向上 --build,并且文件名使用 _ 而不是连字符,它实际上可以工作。不知道为什么,但它确实......
    • 你应该回答你自己的问题,或者至少是解决方案。我无法理解你在这里的真正意思
    猜你喜欢
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2013-12-04
    相关资源
    最近更新 更多