Есть ли способ сообщить Cargo, чтобы установить и построить все мои зависимости, но не пытаться создать мое приложение?Может ли Cargo загружать и строить зависимости без создания приложения?
Я думал, что cargo install
сделает это, но на самом деле это полностью подходит для моего приложения. Я хочу добраться до состояния, в котором cargo build
найдет все зависимости, готовые к использованию, но не касаясь каталога /src
.
Что я действительно пытаюсь выполнить:
Я пытаюсь построить Docker изображение для приложения ржавчины, где я хотел бы сделать следующие шаги:
времясборки (docker build .
):
- импорта грузчиком изображение с ржавчиной оснастки установлен
- добавить мои Cargo.toml и Cargo.lock файлы
- скачать и построить все зависимости
- добавить свой исходный каталог с изображением
- построить мой исходный код
время Run (docker run ...
):
- пройти приложение
Я попытался следующие Dockerfile
, но указанный шаг строит мое приложение, а также (что, конечно, не удается, так как исходный каталог пока не существует):
FROM jimmycuadra/rust
ADD Cargo.toml /source
ADD Cargo.lock /source
RUN cargo install # <-- failure here
ADD src /source/src
RUN cargo build
ENTRYPOINT cargo run
Поэтому я хочу, чтобы отделить установки зависимостей шаг от создания моего приложения, заключается в том, что если я не изменю зависимости, я хочу, чтобы Docker мог использовать кэшированное изображение со всеми уже установленными и построенными зависимостями. Таким образом, я не могу ADD /src /source/src
до после установки зависимостей, поскольку это приведет к аннулированию кэшированного изображения при изменении моего собственного кода.
Это интересное требование! Вы пытались взломать свой путь, предоставив «поддельный» 'lib.rs', который просто перечисляет« extern crate »? Вероятно, это создало бы репозиторий 'target', но вы всегда можете удалить его после выполнения« сборки груза ». –
Это интересная идея! ;) Попробуй, когда я вернусь домой. Я совершенно не знаком с Rust, поэтому я не знаю много о внутренней работе или о том, что требуется для правильного построения - проб и ошибок был мой подход до сих пор ... –
У меня нет большого опыта работы с Cargo так что это скорее предварительная работа. Для всех, кого я знаю, есть именно команда, которую вы хотите получить уже. –