rust docker 图像中的 .cargo 文件夹在哪里?

Where is the .cargo folder in the rust docker image?

所以,我试图进入嵌入式 Rust,为此我不得不使用 Rust 的夜间版本,并修改我的 .cargo/config.toml 以更改目标设备,等等。我决定使用 docker,因为我不希望这干扰我的主要安装。我不太了解 docker,但我假设它与 pipenv 非常相似,我对 docker 图像所做的操作不会影响它之外的任何东西。 (除非我运行代码) 所以,这就是我的 Dockerfile 的样子

FROM jdrouet/rust-nightly:buster-slim AS builder

WORKDIR /usr/source/myapp

COPY . .

RUN cargo build --release

CMD cargo run

当我 运行 sudo docker build . -t name 它给了我以前在修改 .cargo/config.toml 文件之前遇到的错误,我猜这是件好事,因为现在我可以恢复到我的原始配置,并对这个图像的配置文件进行更改。但是我找不到这个 docker 图像的配置文件。我不知道 WORKDIR 是做什么的,但是在我的 /usr 目录

中没有名为 /source 的文件夹

So, I'm trying to get into embedded rust, for which I had to use the nightly version of rust, and modify my .cargo/config.toml to change the target device, and stuff

您可以将文件放入文件夹 wherever/your/project/is/.cargo/config.toml,它只会影响该目录中的项目。

source: Cargo Book

I don't know much about docker, but I'm assuming, it's quite similar to pipenv

Docker其实和Pipenv有很大的不同。 Cargo 与 Pipenv 类似,它为您管理依赖项(Cargo.toml vs Pipfile),区分常规依赖项 vs 开发依赖项 vs 构建时依赖项等。Docker 是一个级别除此之外的隔离 - Docker 容器是与您的实际计算机完全不同的文件系统。 Dockerfile 是一个秘诀,告诉 Docker 如何构建容器的映像,Docker 可以 运行。

基本上,WORKDIR /usr/source/myapp 在 Docker 容器的文件系统 中创建了一个文件夹 /usr/source/app ,然后 cd 进入该文件夹以获取其余部分Docker文件。这意味着以下行 COPY . . 会将与 Dockerfile 相同文件夹中的所有内容复制到容器 /usr/source/app 中的文件夹 中。

我敢打赌,如果你像这样打开一个 shell 到 Docker 容器中:

# Build the docker container
docker build . -t my-cool-project:latest

# Run it
docker run -it my-cool-project:latest bash

您应该能够 cd /usr/source/app 并查看您的所有资料。