最小化的运行Rust的Docker镜像
文章目录
构建阶段
为了构建的稳定,先用Debian的镜像做一个基础的构建镜像
文件:Dockerfile.base
FROM debian:bookworm-slim
ENV RUSTUP_UPDATE_ROOT="https://mirrors.ustc.edu.cn/rust-static/rustup"
ENV RUSTUP_DIST_SERVER="https://mirrors.tuna.tsinghua.edu.cn/rustup"
# 安装必要的工具和依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
ca-certificates \
build-essential \
pkg-config \
libssl-dev \
&& rm -rf /var/lib/apt/lists/*
# 安装 Rustup 和 Rust
RUN curl -v https://sh.rustup.rs -sSf | sh -s -- -y \
&& ~/.cargo/bin/rustup target add x86_64-unknown-linux-musl
# 设置环境变量
ENV PATH="/root/.cargo/bin:${PATH}"
# 设置工作目录
WORKDIR /app
并使用命令:docker build -f Dockerfile.base -t rust-base:latest .
在本地提前构建好基础的镜像
编译打包阶段
使用上一步构建的debian基础镜像,增加x86_64-unknown-linux-musl
静态工具链,并进行编译,使用alpine
镜像作为rust程序运行镜像
文件:Dockerfile
# 使用提前构建好的基础镜像
FROM rust-base:latest AS builder
# 设置工作目录
WORKDIR /app
# 复制项目文件
COPY . .
RUN ~/.cargo/bin/rustup target add x86_64-unknown-linux-musl
# 构建应用程序
RUN cargo build --release --target x86_64-unknown-linux-musl
# 运行阶段使用 Alpine
FROM alpine:latest
# 安装运行时必要的依赖(根据你的应用需求)
# RUN apk add --no-cache openssl curl
# 设置工作目录
WORKDIR /app
# 从构建阶段复制已编译的二进制文件
COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/au92-blog .
COPY .env ./
COPY post ./post
COPY templates ./templates
COPY static ./static
# 暴露端口(如果需要)
EXPOSE 4000
# 设置运行命令
CMD ["./au92-blog"]
文章作者 pengxiaochao
上次更新 2025-01-24
许可协议 不允许任何形式转载。