如何让 Flask 为 Alpine 上的静态文件提供正确的内容类型?

Mar*_*ian 2 flask docker alpine-linux

我正在基于python:2.7-alpine基本映像的 Docker 容器中运行 Flask webapp ,从 Debian 基本映像切换。

Flask 从/static目录中提供的所有图像都使用通用内容类型application/octet-stream而不是预期的特定内容类型提供,因此浏览器无法正确显示图像。

如何解决这个问题?

Mar*_*ian 5

原因是 Alpine 基础图像没有附带任何 MIME 类型信息。查看apk add下面示例 Dockerfile 中的命令。它安装mailcap包,该包仅增加了 68 KB 并包含一个/etc/mime.types文件。

FROM python:2.7-alpine

# install /etc/mime.types
RUN apk update && \
    apk add mailcap && \
    rm /var/cache/apk/*
...
Run Code Online (Sandbox Code Playgroud)

现在提供的 PNG、JPEG 等应该具有预期的 Content-type 标头。