version `GLIBC_2.29' not found

Sam*_*l J 6 rust docker

I am basing my dockerfile on the rust base image. When deploying my image to an azure container, I receive this log: ./bot: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by ./bot)

./bot is my application. The error also occurs when I perform docker run on my Linux Mint desktop.

How can I get GLIBC into my container?

Dockerfile

FROM rust:1.50
WORKDIR /usr/vectorizer/

COPY ./Cargo.toml /usr/vectorizer/Cargo.toml
COPY ./target/release/trampoline /usr/vectorizer/trampoline
COPY ./target/release/bot /usr/vectorizer/bot
COPY ./target/release/template.svg /usr/vectorizer/template.svg

RUN apt-get update && \
    apt-get dist-upgrade -y && \
    apt-get install -y musl-tools && \
    rustup target add x86_64-unknown-linux-musl

CMD ["./trampoline"]
Run Code Online (Sandbox Code Playgroud)

WBu*_*uck 6

现在我不完全理解您的特定项目的依赖关系,但下面的内容Dockerfile应该可以帮助您开始。

您想要做的是在具有所有开发依赖项的映像中进行编译,然后将构建工件移动到更小(但兼容)的映像。

FROM rust:1.50 as builder

RUN USER=root

RUN mkdir bot
WORKDIR /bot
ADD . ./
RUN cargo clean && \
    cargo build -vv --release

FROM debian:buster-slim

ARG APP=/usr/src/app

ENV APP_USER=appuser

RUN groupadd $APP_USER \
    && useradd -g $APP_USER $APP_USER \
    && mkdir -p ${APP}

# Copy the compiled binaries into the new container.
COPY --from=builder /bot/target/release/bot ${APP}/bot

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

USER $APP_USER
WORKDIR ${APP}

CMD ["./trampoline"]
Run Code Online (Sandbox Code Playgroud)