我是一个新手试图学习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
2条答案
按热度按时间rsaldnfx1#
我不知道这是否是一个修复程序,但如果它是相关的,我在rust项目(src/bin)中还有其他二进制文件。我猜这在运行cargo install命令而不生成可执行文件时会产生不同。我将Dockerfile的最后一行更改为
CMD ["./target/release/<name>"]
,其中是项目的名称。b1zrtrql2#
你可以尝试传递可执行文件的完整路径吗?你可以通过在你的本地Rust项目目录中运行
cargo install --path . --list
来获得它。输出将类似于/usr/local/cargo/bin/myapp
。更新CMD指令,类似于CMD ["/usr/local/cargo/bin/myapp"]
。重新构建映像并检查它是否工作。