sapicd/sapic

Docker compose环境下pillow加载错误

Closed this issue · 2 comments

Git:254686f
错误现象:钩子管理中没有pic2webp钩子
复现过程:下载最新master代码,docker compose up -d
错误原因:alpine缺少pillow相关依赖

目前Dockerfile的修复方式存在以下问题:1.将pillow安装放在运行环境中,不利于编译容器和运行容器分开
2.部分用户不需要webp转换功能,却强制安装了pillow库

我建议将运行环境从alpine更换为python3.8-slim,这样能够在很大程度上避免alpine缺少依赖的问题。而且经过我的实验,目前Dockerfile文件编译出的sapic镜像为127M,更换后编译出来的镜像大小为176M
1,大小仅增加了50M,应该在用户可以接受的范围内。我觉得用50M镜像空间的增大,来解决alpine潜在的依赖问题,是一件很划算的事情,不知道您的意见如何?

使用python3.8-slim作为运行环境的Dockerfile内容如下:

# -- build dependencies with debian(multiarch) --
FROM python:3.8-slim AS build
LABEL maintainer=me@tcw.im
ARG PIPMIRROR=https://pypi.tuna.tsinghua.edu.cn/simple
COPY requirements /requirements
RUN pip install --timeout 30 --index $PIPMIRROR --user --no-cache-dir --no-warn-script-location -r /requirements/all.txt

# -- app environment(multiarch) --
FROM python:3.8-slim
ENV LOCAL_PKG="/root/.local"
ENV sapic_isrun=true
COPY --from=build ${LOCAL_PKG} ${LOCAL_PKG}
    
RUN ln -sf ${LOCAL_PKG}/bin/flask ${LOCAL_PKG}/bin/gunicorn /bin/ && \
    ln -sf $(which python) /python && \
    sed -i "s#$(which python)#/python#" /bin/gunicorn
WORKDIR /picbed
COPY src /picbed
EXPOSE 9514
ENTRYPOINT ["gunicorn", "app:app", "-c", "sapicd.py"]

我昨天在看这个问题,没找到替代品,Alpine镜像打包总有问题

同时gevent、pillow在Alpine下的问题,v2再看取消gevent,先改成3.9-slim