Я незнаком с OpenCV, но предположим, что, если есть двоичный файл, который вы можете использовать, это было бы идеальным вариантом.
Мне интересно, почему этот слой (RUN ...
)не кэшируется между сборками. Похоже, что вы четко отделяете марку OpenCV от других операторов в вашем Dockerfile, и поэтому этот RUN
должен генерировать отдельный слой, который стабилен и, следовательно, повторно используется во всех сборках.
Происходит ли это утверждение после более раннегоНапример, RUN
заявления, которые меняются? Если это так, вы можете изменить порядок этого оператора и поместить его ранее в Dockerfile, чтобы этот уровень стал постоянным. См. рекомендации для операторов Dockerfile, которые генерируют слои.
В качестве альтернативы, вы можете создать отдельное изображение, содержащее OpenCV, а затем FROM
это изображение в вашем коде. Вы можете сделать это либо с использованием отдельных файлов Docker, либо с помощью многоступенчатых сборок. Таким образом, этот образ, содержащий сборку OpenCV, будет построен только (по вашему требованию) и повторно использован в последующих сборках.
HTH!