【发布时间】:2016-06-25 21:17:26
【问题描述】:
我正在一个基于python:2.7-alpine 基础镜像的 Docker 容器中运行 Flask webapp,从 Debian 基础镜像切换。
Flask 提供的来自/static 目录的所有图像都以通用内容类型application/octet-stream 提供,而不是预期的特定内容类型,因此浏览器无法正确显示图像。
如何解决这个问题?
【问题讨论】:
我正在一个基于python:2.7-alpine 基础镜像的 Docker 容器中运行 Flask webapp,从 Debian 基础镜像切换。
Flask 提供的来自/static 目录的所有图像都以通用内容类型application/octet-stream 提供,而不是预期的特定内容类型,因此浏览器无法正确显示图像。
如何解决这个问题?
【问题讨论】:
原因是 Alpine 基础镜像没有附带任何 mime 类型信息。查看下面示例 Dockerfile 中的 apk add 命令。它会安装 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
【讨论】: