Избегайте постоянного перестройки образа докера - PullRequest
0 голосов
/ 24 сентября 2018

Я создаю приложение, используя Docker.Мой Dockerfile выглядит так:

FROM python:3.7.0
WORKDIR /app
COPY . /app
RUN apt-get -y update && apt-get -y install apt-utils build-essential libxml2-dev zlib1g-dev python-dev python-pip pkg-config libffi-dev libcairo-dev
RUN pip install -r requirements.txt
CMD ["./run"]

Структура моего проекта:

.
├── Dockerfile
├── requirements.txt
├── run
└── src
    ├── stuff

В требованиях я ставлю plotly, pytest и python-igraph.Дело в том, что python-igraph застрял на этой части

Running setup.py bdist_wheel for python-igraph: started
Running setup.py bdist_wheel for python-igraph: still running...

на довольно чертовски долгое время, но в итоге он извлекает данные, и изображение создается.Однако недопустимо каждый раз так долго перестраивать проект.

Каков будет правильный подход для извлечения модулей, которые не зависят друг от друга?

1 Ответ

0 голосов
/ 24 сентября 2018

Когда я писал последнее предложение, я понял, что происходит.Каждый раз, когда я перестраивал приложение, COPY . /app «читал» новые файлы, и из-за слоев докера, когда меняется первый слой, нужно перестраивать все последующие.Теперь мой Dockerfile выглядит так:

FROM python:3.7.0
RUN apt-get -y update && apt-get -y install apt-utils build-essential libxml2-dev zlib1g-dev python-dev python-pip pkg-config libffi-dev libcairo-dev
WORKDIR /app
COPY requirements.txt /app
RUN pip install -r requirements.txt
COPY . /app
CMD ["./run"]

Необходимость загрузки python-igraph каждый раз, когда нет.Я все равно оставлю это здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...