如何摆脱密码学构建错误?

新手上路,请多包涵

我正在尝试构建一个 dockerfile,但问题是当它试图构建专门的 密码 学时没有构建。

我的 Dockerfile

 FROM python:3.7-alpine

ENV PYTHONUNBUFFERED 1

RUN apk update \
  # psycopg2 dependencies
  && apk add --virtual build-deps gcc python3-dev musl-dev\
  && apk add postgresql-dev \
  && apk add build-base \
  # Pillow dependencies
  && apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \
  # CFFI dependencies
  && apk add libffi-dev py-cffi \
  # Translations dependencies
  && apk add gettext \
  # https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell
  && apk add postgresql-client \
  # cairo
  && apk add cairo cairo-dev pango-dev gdk-pixbuf-dev poppler-utils

# fonts for weasyprint
RUN mkdir ~/.fonts
COPY ./fonts/* /root/.fonts/

# secret key (should be in docker-secrets, or we need to run minikube locally
RUN mkdir /etc/secrets
COPY secret.readme proxy_rsa_key* /etc/secrets/

# Requirements are installed here to ensure they will be cached.
COPY ./requirements /requirements
RUN pip install -r /requirements/local.txt

COPY ./compose/local/django/entrypoint /entrypoint
RUN sed -i 's/\r//' /entrypoint
RUN chmod +x /entrypoint

COPY ./compose/local/django/start /start
RUN sed -i 's/\r//' /start
RUN chmod +x /start

COPY ./compose/local/django/celery/worker/start /start-celeryworker
RUN sed -i 's/\r//' /start-celeryworker
RUN chmod +x /start-celeryworker

COPY ./compose/local/django/celery/beat/start /start-celerybeat
RUN sed -i 's/\r//' /start-celerybeat
RUN chmod +x /start-celerybeat

COPY ./compose/local/django/celery/flower/start /start-flower
RUN sed -i 's/\r//' /start-flower
RUN chmod +x /start-flower

WORKDIR /app

ENTRYPOINT ["/entrypoint"]

当我尝试构建我的 dockerfile 时,它显示:

 Building wheel for cryptography (PEP 517): finished with status 'error'
  ERROR: Command errored out with exit status 1:

  error: Can not find Rust compiler
  ----------------------------------------
  ERROR: Failed building wheel for cryptography

我试图解决,但我不能。我是 docker 的新手。请帮助解决这个问题。

原文由 ALAM PARVEZ ANIK 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 442
2 个回答

由于错误是…

 error: Can not find Rust compiler

…解决方案是安装 rust 编译器。您还需要 cargo ,Rust 包管理器,看起来您的 Dockerfile 缺少 openssl-dev

以下为我成功构建:

 FROM python:3.7-alpine

ENV PYTHONUNBUFFERED 1

RUN apk add --update \
  build-base \
  cairo \
  cairo-dev \
  cargo \
  freetype-dev \
  gcc \
  gdk-pixbuf-dev \
  gettext \
  jpeg-dev \
  lcms2-dev \
  libffi-dev \
  musl-dev \
  openjpeg-dev \
  openssl-dev \
  pango-dev \
  poppler-utils \
  postgresql-client \
  postgresql-dev \
  py-cffi \
  python3-dev \
  rust \
  tcl-dev \
  tiff-dev \
  tk-dev \
  zlib-dev

RUN pip install cryptography

请注意,上面的 apk add ... 命令行与您所拥有的基本相同;我刚刚将多个 apk add ... 语句简化为一个 apk add 执行。

原文由 larsks 发布,翻译遵循 CC BY-SA 4.0 许可协议

密码学 < 3.5:

您可以通过在 apk add 命令之前添加以下行来跳过 rust 安装和其他相关依赖项:

 ENV CRYPTOGRAPHY_DONT_BUILD_RUST=1

密码学 >= 3.5谢谢@riptusk331

在此版本之后将 需要 rust 。安装特定版本 <3.5 或遵循加密安装说明。附加链接中指出,它们在文档中得到了非常积极的解释。

原文由 Sabri Özgür 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进