Я создаю докер для своего приложения Flask.В приложении я использую модуль python, клонированный из github.Назовем его модулем A. Модуль A состоит из другого модуля, клонированного из git, назовем его модулем B. Модуль A имеет скрипт install.sh
, в котором клонирован модуль B.Модуль B состоит из другого модуля (C), клонированного из git, и он клонируется из скрипта install.sh
из модуля B. Поэтому в моем dockerfile я запускаю install.sh
модуля A, он запускает install.sh
модуля Bи он запускает install.sh
модуля C.
flask_app
├── Dockerfile
├── A
| ├── install.sh
| ├── B
| ├── install.sh
| ├── C
| ├── install.sh
Мне нужно изменить некоторый код в модуле A, чтобы он соответствовал моему приложению, поэтому я клонирую его вручную и изменяю код.
В dockerfile я использую
RUN cd ./A && ./install.sh
, который устанавливает все необходимые модули.Проблема в том, что он не использует кеш при сборке докера в другой раз.Это огромная проблема, потому что сборка модуля C занимает 1 час.Как я могу сделать Docker кэшировать эту команду?
Это весь файл Docker:
FROM python:2.7
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
WORKDIR /app
RUN apt-get update
RUN pip install --upgrade pip
RUN apt-get update && \
apt-get -y install sudo
ADD ./requirements.txt ./requirements.txt
RUN pip install -r requirements.txt
ADD . /app
RUN cd ./A && ./install.sh
ENV WEB_CONCURRENCY 5
CMD gunicorn app:app