Docker和PermissionError:[Errno 13]权限被拒绝:'output.svg'

时间:2020-04-30 15:35:03

标签: python docker

我有一个flask应用程序和一个用于创建svg文件的函数。当我在本地运行时,一切都会正常进行,但是使用Docker时,我会不断遇到此错误:

  File "app.py", line 91, in get_svg
    svg_f = open("output.svg", "w+")
PermissionError: [Errno 13] Permission denied: 'output.svg'

首先,我认为问题出在路径上,但是由于我只写当前目录,因此就足够了(尝试使用绝对路径和可能的所有其他可能选项)。

该功能只是打开文件并写入文件的标准方式。

svg_f = open("output.svg", "w+")
svg_f.write(f'<svg width="{w}" height="{h}" xmlns="http://www.w3.org/2000/svg">')
....
svg_f.close()

可能是什么原因造成的?

2 个答案:

答案 0 :(得分:0)

确保Dockerfile未指定可能没有权限在USER中写入的WORKDIR。注释也相关(挂载卷和容器以低特权用户身份运行)。这是用于调试的基准的简单图像示例。

Dockerfile

FROM python:3.8-alpine

RUN mkdir /app
COPY app.py /app

WORKDIR /app

ENTRYPOINT ["python3"]
CMD ["/app/app.py"]

app.py

w = 1
with open('output.svg', 'w+') as fw:
    fw.write(f'<svg width="{w}"')

print('Success!')

放映时间

$ docker build -t edd/so_q .
...magic...
$ docker run edd/so_q
Success!

答案 1 :(得分:0)

我正在使用Fedora 32,我不得不暂时禁用SELinux。

$ sudo setenforce 0