[英]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.