我正在使用Rocket.rs在Docker容器中部署一个Rust应用到Heroku。每次我进行一点小改动,就必须推送整个容器。这需要重新下载所有的rust组件(rustc、rust-std、cargo等),重新下载所有依赖项,并重新推送层。特别是有一个1.02GB的层,每次都要推送,需要大约30分钟的时间。每次都要如此。如何避免:
顺便提一下,我的代码非常简单:(这是唯一的.rs文件)
- 每次重新下载rustc、rust-std、cargo和rust-docs
- 每次重新下载相同的未更改的依赖项
- 每次重新推送1.02GB的层
顺便提一下,我的代码非常简单:(这是唯一的.rs文件)
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use] extern crate rocket;
use std::fs;
#[get("/")]
fn index() -> &'static str {
"Hello from Rust!"
}
fn main() {
rocket::ignite().mount("/", routes![index]).launch();
}
Dockerfile
添加到问题中吗?有一些相当标准的技巧。(一个单独的1 GB层对于一个非常小的程序来说有点不寻常。) - David Maze