ОШИБКА: неудовлетворительные ограничения в docker - PullRequest
1 голос
/ 01 апреля 2020

Я новичок в docker.

У меня есть два вопроса
Вопрос № 1
Я создал этот базовый c docker файл, который устанавливает Apache - воздушный поток и Apache - сельдерей . Но пока просто хотел установить воздушный поток. Я сталкиваюсь со странной проблемой, говоря unsatisfiable constraints.

error

Я устаю. Я пытался, но не смог решить проблему. Любая помощь будет оценена по достоинству.

FROM python:3.6-alpine
WORKDIR /airflow

RUN apk add git gcc python3-dev gpgme-dev libc-dev python-devel python-setuptools mysql-devel gcc-c++

COPY airflow/requirements.txt airflow/requirements.txt
RUN pip install -r airflow/requirements.txt
COPY . /airflow

EXPOSE 8080 5555

CMD ["airflow", "initdb"]

У меня есть файл needs.txt, в котором есть зависимости для Apache -Airflow.

needs.txt

pytz==2015.7
cryptography
requests
pyOpenSSL
ndg-httpsclient
pyasn1
psycopg2
celery>=4.0.0
flower>=0.7.3

Flask==1.1.1
requests==2.22.0
airflow==1.10.8
MySQL-python
flask_bcrypt

Вопрос # 2

Мы используем conda-library image continuumio/miniconda3 для установки зависимостей. Это хороший подход к использованию ???

1 Ответ

0 голосов
/ 01 апреля 2020

Сделано несколько изменений, вот новый файл Docker:

FROM python:3.6-alpine
WORKDIR /airflow

RUN apk add build-base libffi-dev musl-dev postgresql-dev mariadb-connector-c-dev

COPY requirements.txt ./requirements.txt
RUN pip install -r requirements.txt
COPY . /airflow

EXPOSE 8080 5555

CMD ["airflow", "initdb"]

И новые требования. Текст:

pytz==2015.7
cryptography
pyOpenSSL
ndg-httpsclient
pyasn1
psycopg2
celery>=4.0.0
flower>=0.7.3

Flask==1.1.1
requests==2.22.0
apache-airflow==1.10.8
mysqlclient
flask_bcrypt

Сводка изменений:

  • Вы пытались загрузить пакеты, которых нет в Alpine (они похожи на пакеты debian), я заменил большинство из них на apk add build-base
  • , добавив libffi-dev для пакета cryptography
  • добавлено musl-dev и postgresql-dev для psycopg2
  • MySQL - python не поддерживает python3, поэтому я заменил его на mysqlclient
  • добавлено mariadb-connect-c-dev для mysqlclient
  • другие мелкие исправления, исправленные пути копирования, удаленные дубликаты зависимостей

И да, в общем случае может быть лучше не использовать alpine для сборки пакетов python ( https://pythonspeed.com/articles/alpine-docker-python/). Если вы переключитесь на continuumio/miniconda3, это будет немного проще (и намного быстрее построить).

FROM continuumio/miniconda3
WORKDIR /airflow

RUN apt-get update && apt-get install -y libpq-dev libmariadbclient-dev build-essential

COPY requirements.txt ./requirements.txt
RUN pip install -r requirements.txt
COPY . /airflow

EXPOSE 8080 5555

CMD ["airflow", "initdb"]
...