在 Docker Apline Python 中安装 Gevent 时出错

sur*_*ute 5 python-3.x docker alpine-linux

我正在尝试在运行 gunicorn 的 docker python:3.8.0a4-alpine3.9 上安装 Gevent。

在构建 docker 时,我总是收到错误消息“gcc failed with exit status 1”。

我试过安装几个软件包,但没有一个成功。

这是 Dockerfile:

FROM python:3.8.0a4-alpine3.9

RUN echo "@edge-community http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \
  apk update && \
  apk add build-base python-dev && \
  apk add py-gevent

RUN pip install gunicorn gevent
Run Code Online (Sandbox Code Playgroud)

命令: docker build . -t "test:one"

最后几行输出:

FROM python:3.8.0a4-alpine3.9

RUN echo "@edge-community http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \
  apk update && \
  apk add build-base python-dev && \
  apk add py-gevent

RUN pip install gunicorn gevent
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的 Gunicorn 命令:

gunicorn web.wsgi:application --bind 0.0.0.0:8000  --worker-connections 1000 --workers 6 -k gevent
Run Code Online (Sandbox Code Playgroud)

您对如何使用此版本的 python alpine 安装 Gevent 有任何想法吗?

编辑 - 它在最新版本的 Apline 和 python 上成功安装 - FROM python:3.7-alpine3.8

Son*_*ong 14

需要在 libs 下安装 ailpine 映像来构建 gevent。
RUN apk add --no-cache python3-dev libffi-dev gcc musl-dev make
这个 docker 文件可能有助于测试

  • 谢谢你,先生!我在 alpine 3.7.7 上缺少 make。对于在撰写本文时想知道 gevent 不支持 python 3.8 的人,无论是否是 alpine。如果您使用的是 docker 构建器映像,请确保将两个映像放入同一版本的 dockerfile 中:) (3认同)

xma*_*tas 5

对我来说,以上都不起作用python:3.8-alpine。做了这个:

RUN apk --update --no-cache add python3-dev libffi-dev gcc musl-dev make libevent-dev build-base
Run Code Online (Sandbox Code Playgroud)

  • 我尝试减少列表,最后只需要“build-base”。 (2认同)

atl*_*ine 2

看到这个,几年前,有人想要在 python3.7 上安装并遇到问题,去年进行了修复以支持geventpython3.7。

所以,我想 gevent 团队需要额外的努力来适应每个 python 版本,因为它的原则是monkey patch为 python 做一些。

而且,从其目前的官方公告来看,它表示:

gevent 1.5 在 Python 2.7.9 及更高版本以及 Python 3.5、3.6 和 3.7 上运行。

它没有提到3.8,所以你肯定需要等待。