繁体   English   中英

从 rust 工作区创建 docker 图像

[英]create docker image from rust workspace

您好,我有一个货物工作区,上面有多个项目。 现在我想将它 dockerize,但我希望每个项目都在单独的图像中。 有没有办法构建整个工作区并从该构建创建多个图像?

现在我使用单独的 dockerfile 来构建每个项目,如下所示:

这是团体服务的 dockerfile:

FROM rust:slim 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 /usr/src/app

# copy entire workspace
COPY . .

RUN cargo build --target x86_64-unknown-linux-musl --release


FROM alpine

COPY --from=builder /usr/src/app/target/x86_64-unknown-linux-musl/release/groups-service ./


CMD [ "./groups-service" ]

每项服务我都有一个 dockerfile。

但我想要一个 dockerfile 生成多个具有不同名称的图像,例如service/groups service/report service/graph ,这样我就可以运行docker build. 一次并构建所有服务。

因为现在构建它需要很多时间,我想减少和简化我的工作

只需从同一个Dockerfile构建所有图像,例如:

FROM rust:slim 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 /usr/src/app

# copy entire workspace
COPY . .

RUN cargo build --target x86_64-unknown-linux-musl --release


FROM alpine
COPY --from=builder /usr/src/app/target/x86_64-unknown-linux-musl/release/groups-service ./
CMD [ "./groups-service" ]

FROM alpine
COPY --from=builder /usr/src/app/target/x86_64-unknown-linux-musl/release/groups-report ./
CMD [ "./groups-report" ]

然后运行docker build将使用相同的builder一次构建所有目标图像。 然后您可以使用docker tag设置图像名称。 为了方便识别构建好的镜像,可以在每张镜像上加上一个LABEL

...

FROM alpine
COPY --from=builder /usr/src/app/target/x86_64-unknown-linux-musl/release/groups-service ./
CMD [ "./groups-service" ]
LABEL service=groups

FROM alpine
COPY --from=builder /usr/src/app/target/x86_64-unknown-linux-musl/release/groups-report ./
CMD [ "./groups-report" ]
LABEL service=report

然后使用docker image inspect --format='{{.Config.Labels}}'docker image ls --filter=label=<key>=<value>来识别图像。 例如:

docker tag $(docker image ls --filter=dangling=true --filter=label=service=groups) service/groups
docker tag $(docker image ls --filter=dangling=true --filter=label=service=report) service/report

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM