- vừa được xem lúc

Dockerfile for Rust

0 0 5

Người đăng: Hàn Lập Đạo tổ

Theo Viblo Asia

Template Dockerfile for Rust programming languages.

A common version that you usually see:

FROM rust:1.70.0-slim-bullseye # View app name in Cargo.toml
ARG APP_NAME=devopsvn WORKDIR /app COPY . .
RUN cargo build --locked --release
RUN cp ./target/release/$APP_NAME /bin/server ENV ROCKET_ADDRESS=0.0.0.0
CMD ["/bin/server"]

But it doesn't reuse cache layer and optimizes. Reuse cache layer for build faster:

FROM rust:1.70.0-slim-bullseye # View app name in Cargo.toml
ARG APP_NAME=devopsvn WORKDIR /app COPY Cargo.lock Cargo.toml ./
RUN mkdir src \ && echo "// dummy file" > src/lib.rs \ && cargo build --release COPY src src
RUN cargo build --locked --release
RUN cp ./target/release/$APP_NAME /bin/server ENV ROCKET_ADDRESS=0.0.0.0
CMD ["/bin/server"]

Optimize Image size with multi-stage:

FROM rust:1.70.0-slim-bullseye AS build # View app name in Cargo.toml
ARG APP_NAME=devopsvn WORKDIR /build COPY Cargo.lock Cargo.toml ./
RUN mkdir src \ && echo "// dummy file" > src/lib.rs \ && cargo build --release COPY src src
RUN cargo build --locked --release
RUN cp ./target/release/$APP_NAME /bin/server FROM debian:bullseye-slim AS final
COPY --from=build /bin/server /bin/
ENV ROCKET_ADDRESS=0.0.0.0
CMD ["/bin/server"]

With non-privileged users:

FROM rust:1.70.0-slim-bullseye AS build # View app name in Cargo.toml
ARG APP_NAME=devopsvn WORKDIR /build COPY Cargo.lock Cargo.toml ./
RUN mkdir src \ && echo "// dummy file" > src/lib.rs \ && cargo build --release COPY src src
RUN cargo build --locked --release
RUN cp ./target/release/$APP_NAME /bin/server FROM debian:bullseye-slim AS final RUN adduser \ --disabled-password \ --gecos "" \ --home "/nonexistent" \ --shell "/sbin/nologin" \ --no-create-home \ --uid "10001" \ appuser
USER appuser COPY --from=build /bin/server /bin/
ENV ROCKET_ADDRESS=0.0.0.0
CMD ["/bin/server"]

For other programming language, check here: Dockerfile for many programming languages.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Đề thi interview DevOps ở Châu Âu

Well. Chào mọi người, mình là Rice - một DevOps Engineers ở đâu đó tại Châu Âu.

0 0 65

- vừa được xem lúc

In calculus, love also means zero.

Mình nhớ hồi năm 2 đại học, thầy giáo môn calculus, trong một giây phút ngẫu hứng, đã đưa ra cái definition này. Lúc đấy mình cũng không nghĩ gì nhiều.

0 0 51

- vừa được xem lúc

Chuyện thay đổi

Thay đổi là một thứ gì đó luôn luôn đáng sợ. Cách đây vài tháng mình có duyên đi làm cho một banking solution tên là X.

0 0 30

- vừa được xem lúc

Pet vs Cattle - Thú cưng và gia súc

Khái niệm. Pets vs Cattle là một khái niệm cơ bản của DevOps. Bài viết này sẽ nói về sự phát triển của các mô hình dịch vụ từ cốt lõi Pets and Cattle. 1.

0 0 22

- vừa được xem lúc

Git workflow được Google và Facebook sử dụng có gì hay ho

Với developer thì Git hẳn là công cụ rất quen thuộc và không thể thiếu rồi. Thế nhưng có mấy ai thực sự hiểu được Git.

0 0 66

- vừa được xem lúc

Kubernetes - Học cách sử dụng Kubernetes Namespace cơ bản

Namespace trong Kubernetes là gì. Tại sao nên sử dụng namespace.

0 0 96