国内访问 crates 下载 crates 太慢可以在本地设置 crates 镜像,在 Dockerfile 中的时候也同样可以设置

步骤大致和我们本地相同,但有细微差别。

在我们 FROM 了一个 Rust 镜像后,如:FROM dockerproxy.cn/rust:1.81-slim AS chef,添加:

RUN  echo "[source.crates-io]\n\ 
    replace-with = 'rsproxy-sparse'\n\
    [source.rsproxy]\n\
    registry = \"https://rsproxy.cn/crates.io-index\"\n\
    [source.rsproxy-sparse]\n\ 
    registry = \"sparse+https://rsproxy.cn/index/\"\n\ 
    [registries.rsproxy]\n\ 
    index = \"https://rsproxy.cn/crates.io-index\"\n\ 
    [net]\n\
    git-fetch-with-cli = true\n" >> $CARGO_HOME/config.toml

可以看到以上命令就是写了镜像的配置到 config.toml 文件,有一点不同的是上面使用了 $CARGO_HOME 环境变量,这个环境变量是在我们使用的 Rust 的镜像中指定的,它的 value 是 cargobinenv 所在的目录,value 是 /usr/local/cargo

我们使用到的镜像是字节提供的镜像,地址为:RsProxy

可以看到和我们本地配置的方式不同,本地是在 ~/.cargo/ 目录下,如果使用本地的方式是不生效的。

注:这里的配置文件名是 config.toml,旧版的是 config,推荐用带有 .toml 后缀的文件名。

参考