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

问题描述 投票:0回答:1

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

docker rust rust-cargo actix-web
1个回答
1
投票

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

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

但是这两个图像具有完整的 Rust 环境,因此它们可能太大。如果您希望获得更小的映像,最好使用 docker 多阶段构建将二进制文件放入新的干净映像中。 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" ]

这种方式构建起来很慢,因为docker无法缓存cargo的构建阶段。看看cargo-chef以获得解决方案。

对于最后一个问题,抱歉目前我没有经验,所以我不知道实际的答案。但我认为如果你正确地针对目标平台进行交叉编译就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.