gpt4 book ai didi

docker - 使用docker创建图像以进行rust应用程序

转载 作者:行者123 更新时间:2023-12-03 11:47:31 24 4
gpt4 key购买 nike

我已经创建了rust应用程序,我想对我的应用程序进行docker化。以下是我的Dockerfile代码,仅供引用。我在创建图像时遇到问题,出现如下所述的错误。在我的本地my-app项目文件夹中,我有cargo.toml,其中不包含任何package name,其仅包含work-space,以下为引用。请帮忙。

error: failed to read /home/rust/src/my-app/config/Cargo.toml

FROM ekidd/rust-musl-builder:stable as builder

RUN USER=root cargo new --bin my-app
WORKDIR ./my-app
COPY ./Cargo.lock ./Cargo.lock
COPY ./Cargo.toml ./Cargo.toml
RUN cargo build --release
RUN rm src/*.rs

ADD . ./

RUN rm ./target/x86_64-unknown-linux-musl/release/deps/my-app*
RUN cargo build --release


FROM alpine:latest

ARG APP=/usr/src/app

EXPOSE 8000

ENV TZ=Etc/UTC \
APP_USER=appuser

RUN addgroup -S $APP_USER \
&& adduser -S -g $APP_USER $APP_USER

RUN apk update \
&& apk add --no-cache ca-certificates tzdata \
&& rm -rf /var/cache/apk/*

COPY --from=builder /home/rust/src/my-app/target/x86_64-unknown-linux-musl/release/rust-docker-web ${APP}/my-app

RUN chown -R $APP_USER:$APP_USER ${APP}

USER $APP_USER
WORKDIR ${APP}

CMD ["./my-app"]

cargo.toml
[workspace]

members = [
"abcd",
"efgh"
"ijkl"
]
在config.toml中添加软件包名称后,我面临错误

Caused by:no targets specified in the manifesteither src/lib.rs, src/main.rs, a [lib] section, or [[bin]] section must be present

最佳答案

Cargo需要nameversion键来构建您的应用程序。添加这些应该可以解决此问题:

[package]
name = "foo"
version = "0.1.0"

[workspace]
members = [
"abcd",
"efgh"
"ijkl"
]
请注意,尽管不需要 edition key ,但如果未指定,默认情况下, cargo 将使用Rust 2015 Edition而不是较新的2018 Edition编译您的应用程序。您可能应该指定您的Rust版本(即使您使用的是2015版本),以免造成任何混淆:
[package]
edition = "2018"

关于docker - 使用docker创建图像以进行rust应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64628462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com