【发布时间】:2022-01-19 14:28:26
【问题描述】:
我正在尝试在 Digital Ocean(它是一个数据中心)上进行部署,但遇到了阻止部署的问题。
构建过程运行良好。
我的项目 Dockerfile:
####################################################################################################
## Builder
####################################################################################################
FROM rust:latest AS builder
RUN rustup target add x86_64-unknown-linux-musl
RUN apt update && apt install -y musl-tools musl-dev
RUN update-ca-certificates
WORKDIR /myrustapp
COPY ./ .
RUN cargo build --release
RUN chmod -R 777 /myrustapp
####################################################################################################
## Final image
####################################################################################################
FROM scratch
WORKDIR /myrustapp
COPY --from=builder /myrustapp/target/release/myrustapp ./
# RUN chmod -R 777 /myrustapp <- this occure a build crash because sh is not present in scratch image
最后(D.O执行的EQ命令):docker run myimage /myrustapp
结果/错误:
[myrustapp] [2022-01-19 14:14:19] starting container: starting non-root container [/myrustapp]: creating process: failed to load /myrustapp: permission denied
提前非常感谢!
【问题讨论】:
-
/myrustapp参数在docker run命令中的作用是什么? -
目的是容器中的运行命令,但实际上在Digital Ocean中我有一个字段来指定容器中的启动命令。所以这里只是原始 docker 命令@LeiYang 中等效命令的一个示例
-
根据您的 Docker 版本,您可以尝试将
--chmod=755添加到您的COPY命令中。 -
您的 Docker 命令运行用户是否在 docker 组中?我的意思是 sudo usermod -aG docker $USER ...
-
@Jmb Digital Ocean 向我显示:“错误构建图像:解析 dockerfile:Dockerfile 解析错误行 47:未知标志”添加此标志后,但在我自己的系统上为构建端工作,运行端不工作。
标签: docker rust dockerfile containers digital-ocean