How to get rid of cryptography build error?

Total
0
Shares

I am trying to build a dockerfile but the problem is when it trying to build specifically cryptography is not building.

MY 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"]

when I try to build my dockerfile it shows:

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

I tried to solve but i couldn’t. I am newbie in docker.Please help how to get rid of this problem.


Solution

Since the error is…

error: Can not find Rust compiler

…the solution is to install the rust compiler. You’ll also need
cargo, the Rust package manager, and it looks like your Dockerfile
is missing openssl-dev.

The following builds successfully for me:

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

Note that the above apk add ... command line is largely the same as
what you’ve got; I’ve just simplified the multiple apk add ...
statements into a single apk add execution.

Source: StackOverflow.com

Leave a Reply

Your email address will not be published. Required fields are marked *