封面来源 Unsplash
问题介绍
使用Rust
开发的程序通过cargo build
构建成功后在Ubuntu环境中运行良好,但当通过Docker使用Alpine容器部署该程序时,Dockerfile文件如下:
FROM alpine
COPY ./app /root/lib
ENTRYPOINT ["/root/lib"]
构建镜像正常,但当运行镜像时发生以下错误:
Error loading shared library libgcc_s.so.1: No such file or directory (needed by ./lib)
解决方案
在Alpine容器中安装libgcc
apk add --no-cache -U libgcc
即将Dockerfile更改为下:
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"]