有没有办法告诉Cargo安装和构建我的所有依赖项,但是没有尝试构建我的应用程序?
我想cargo install会这样做,但它实际上也一直在构建我的应用程序.我想进入一个状态,在那里cargo build可以找到所有依赖项,但无需触及/src目录.
我真正想要实现的目标:
我正在尝试为Rust应用程序构建Docker镜像,我想在其中执行以下步骤:
建立时间(docker build .):
运行时间(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,直到后安装依赖条件,因为当我改变我自己的代码,将无效缓存图像.
假设我执行cargo new one --bin和cargo new two --bin然后添加相同的依赖于每个项目的Cargo.toml并构建它们.
现在有两组完全相同的库:
/ one/target/debug/deps/*.rlib
/ two/target/debug/deps/*.rlib
它们是相同的文件和浪费的存储空间,但问题是我必须为每个项目再次编译这些库.这需要很长时间.有同样的问题cargo install.
我可以指定存储已编译库的位置以避免重新编译吗?