我在基于python:2.7-alpine
基本映像的 Docker 容器中运行 Flask webapp,从 Debian 基本映像切换。
Flask 从/static
目录中提供的所有图像都以通用内容类型application/octet-stream
而不是预期的特定内容类型提供,因此浏览器无法正确显示图像。
如何解决这个问题?
原因是 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/*
...
现在提供的 PNG、JPEG 等应该具有预期的内容类型标头。
apk add --update shared-mime-info
https://pkgs.alpinelinux.org/contents?branch=v3.7&name=shared-mime-info&arch=x86_64&repo=main