Docker: перезапустить только некоторые этапы сборки - PullRequest
0 голосов
/ 21 марта 2020

Я довольно новичок в Docker и столкнулся с небольшой проблемой. Для моего приложения мне нужно получить некоторые зависимости в dockerfile, которые требуют времени для установки. Dockerfile по сути выглядит следующим образом:

FROM ubuntu:latest
RUN <time-consuming dependency installation>
COPY . /app
ENTRYPOINT ["/app/entrypoint.sh"]

Когда я делаю небольшое изменение в своем коде, я хотел бы иметь возможность перезапустить контейнер, не устанавливая все заново, но при повторной сборке все еще используется старый код. Восстановление без кеша работает, но требует установки ~ 10 минут (и ненужной полосы пропускания).

Есть ли способ использовать кеш для каждого шага, КРОМЕ КОПИРОВАНИЯ? Или я могу сохранить простое изображение только с зависимостями?

docker -compose.yaml выглядит так:

version: "3.7"
services:
  my-app:
    build:
      context: '.'
    ports:
      - "0.0.0.0:80:8000"

Для сборки я делаю

docker-compose down
docker-compose build
docker-compose up

Но это работает, только если я добавлю --no-cache в команду сборки.

1 Ответ

0 голосов
/ 21 марта 2020

При просмотре Dockerfile ваша команда RUN часто должна кэшироваться

...