在$PATH中未找到Docker运行"可执行文件:未知"

ix0qys7i  于 2023-03-01  发布在  Docker
关注(0)|答案(2)|浏览(217)

我是一个新手试图学习Docker。我在WSL 2与Docker桌面安装和运行。我有一个 rust 应用程序,只是运行一个简单的Actix网络服务器。以下是我的Dockerfile:

FROM rust:1.67

WORKDIR /usr/src/myapp
COPY . .

RUN cargo install --path .

CMD ["myapp"]

直到最后一个CMD命令之前,一切都正常,当我运行容器时,它给出了以下错误:

docker run -it -p 8080:8080 --rm --name my-running-app my-rust-app
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "myapp": executable file not found in $PATH: unknown.

我理解这个错误-容器找不到rust可执行文件,不管是什么原因。
我没主意了。能帮我吗?
我已经在网上查找了这个问题,并尝试了以下方法:

  • 将CMD更改为切入点
  • 运行命令["./myapp”]
  • 使用ENV命令将可执行文件添加到PATH
rsaldnfx

rsaldnfx1#

我不知道这是否是一个修复程序,但如果它是相关的,我在rust项目(src/bin)中还有其他二进制文件。我猜这在运行cargo install命令而不生成可执行文件时会产生不同。我将Dockerfile的最后一行更改为CMD ["./target/release/<name>"],其中是项目的名称。

b1zrtrql

b1zrtrql2#

你可以尝试传递可执行文件的完整路径吗?你可以通过在你的本地Rust项目目录中运行cargo install --path . --list来获得它。输出将类似于/usr/local/cargo/bin/myapp。更新CMD指令,类似于CMD ["/usr/local/cargo/bin/myapp"]。重新构建映像并检查它是否工作。

相关问题