vca*_*ra1 7 heroku rust docker
我正在使用Docker容器中的Rocket.rs将Rust应用程序部署到Heroku.每次我做一个小改动,我都要推动整个容器.这需要重新下载所有生锈组件(rustc,rust-std,货物等),重新下载所有依赖项,并重新推送层.特别是,每次推送一个1.02 GB的层,大约需要30分钟.每次.我怎样才能避免:
这里是我的所有相关文件,其主旨在于:https://gist.github.com/vcapra1/0a857aac8f05277e65ea5d86e8e4e239
顺便提一下,我应该提到我的代码非常小:(这是唯一的.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();
}
Run Code Online (Sandbox Code Playgroud)
每次都重新下载 rustc、rust-std、cargo 和 rust-docs。每次都重新下载相同的、未更改的依赖项
您应该缓存这些步骤。
每次重新推送 1.02 GB 层
您不需要任何 Rust 工具链来运行已编译的二进制应用程序,因此您可以简单地使用debian:8-slim甚至alpine运行它。
这会将图像大小减少到 84.4MB:
FROM rust:1.31 as build
RUN USER=root cargo new --bin my-app
WORKDIR /my-app
# Copy manifest and build it to cache your dependencies.
# If you will change these files, then this step will rebuild
COPY rust-toolchain Cargo.lock Cargo.toml ./
RUN cargo build --release && \
rm src/*.rs && \
rm ./target/release/deps/my_app*
# Copy your source files and build them.
COPY ./src ./src
COPY ./run ./
RUN cargo build --release
# Use this image to reduce the final size
FROM debian:8-slim
COPY --from=build /my-app/run ./
COPY --from=build /my-app/target/release/my-app ./target/release/my-app
CMD ["./run"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |