解决Rust二进制程序无法部署在Alpine容器中的问题

文章目录

问题介绍

使用Rust开发的程序通过cargo build构建成功后在Ubuntu环境中运行良好,但当通过Docker使用Alpine容器部署该程序时,Dockerfile文件如下:

text
FROM alpine
COPY ./app /root/lib
ENTRYPOINT ["/root/lib"]

构建镜像正常,但当运行镜像时发生以下错 误:

text
Error loading shared library libgcc_s.so.1: No such file or directory (needed by ./lib)

解决方案

在Alpine容器中安装libgcc

text
apk add --no-cache -U libgcc

即将Dockerfile更改为下:

text
FROM alpine
COPY ./app /root/lib
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
RUN apk add --no-cache -U libgcc
ENTRYPOINT ["/root/lib"]

参考内容

SIGSEGV with program linked against OpenSSL in an Alpine container - help - The Rust Programming Language Forum (rust-lang.org)

解决Alpine上Rust无法使用过程宏的方法 - 知 乎 (zhihu.com)

评论

0 条留言

还没有留言,欢迎分享你的想法。