Docker和PermissionError。[Errno 13] Permission denied: 'output.svg' (输出.SVG)

问题描述 投票:0回答:1

我有一个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()

是什么原因造成的呢?

python docker
1个回答
0
投票

请确保 Dockerfile 并没有指定 USER 可能没有权限在您的 WORKDIR. 注释也是相关的(挂载的卷和容器作为一个低私有用户运行)。这里有一个简单的图像示例,你可以用它来调试。

Docker文件

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!
© www.soinside.com 2019 - 2024. All rights reserved.