我如何使用 docker 中的货物构建和 运行 我的 Actix 应用程序?

How can I build and run my Actix application using cargo in docker?

我的问题的第二部分: 开始我的申请是否明智?或者您认为最好在我的本地机器上构建应用程序,然后使用 docker 中的二进制文件?如果我使用二进制文件,构建版本最终文件是否可以在 PaaS docker 以及我的 windows 机器上工作?

当然可以。但在我看来,这可能不是一个好的选择。

首先,您可以找到两张 docker 图片:rust and rustlang/rust。第一个用于稳定频道,第二个用于夜间频道。您可以在这些图像中构建和 运行 程序,就像在 Debian/Alpine 机器中一样。

但是这两张图都是全rust环境,所以可能太大了。如果你想要一个更小的镜像,最好使用 docker multi-stage 构建将二进制文件放入一个新的干净的镜像中。 Dockerfile 可能是这样的:

FROM rustlang/rust:nightly-alpine AS build

WORKDIR /usr/src/MyApp
COPY . .
RUN apk add --no-cach musl-dev && \
    cargo install --path .

# FINAL

FROM rustlang/rust:nightly-alpine

COPY --from=build /usr/local/cargo/bin/myapp /usr/local/bin/myapp
ENTRYPOINT [ "myapp" ]

It is slow to build in this way since docker cannot cache the build stage of cargo. Take a look at cargo-chef to get a solution.

关于最后一个问题,很抱歉目前我没有经验,所以我不知道真正的答案。但我认为如果你正确地 cross-compile 目标平台就没问题。