我有一个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()
可能是什么原因造成的?
答案 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