加载共享库时出错:libssl.so.1.1:无法打开共享对象文件:没有这样的文件或目录

Eug*_*ene 11 docker dockerfile docker-compose

我是docker新手,第一次遇到这样的错误。

这是我的 DockerFile

FROM rust:latest as builder
ENV APP mapservice
WORKDIR /usr/src/$APP
COPY . .
RUN cargo install --path .
 
FROM debian:buster-slim
RUN apt-get update && rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/local/cargo/bin/$APP /usr/local/bin/$APP
#export this actix web service to port 8080 and 0.0.0.0
EXPOSE 8080
CMD ["mapservice"]
Run Code Online (Sandbox Code Playgroud)

当我跑步时

docker run -it --rm -p 8080:8080 mapservice
Run Code Online (Sandbox Code Playgroud)

我收到如下错误: mapservice: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

我不知道为什么会出现这个错误。也许我的 APIKEY 硬编码在 main.rs 中?有人知道如何解决这个问题吗?我的笔记本电脑是 M1pro Mac。

我尝试使用类似的 dockerfile 运行另一个示例项目,一切都很好。我还尝试将其部署在 AWS 上,这又给我带来了 8080 上的另一个运行状况检查错误。是不是我的 docker 文件有问题?

Jja*_*ack 3

此错误是因为您已将构建的可执行文件复制到尚未libssl.so.1.1安装的新基础映像。要修复,您需要在之前安装依赖项CMD步骤之前通过软件包安装来安装依赖项。

解决此问题的一种方法是通过在步骤之前openssl添加来安装包。您还可以深入安装 libssl 库本身,更多信息请参见: https: //packages.debian.org/buster/libssl-dev。还有其他软件包也会安装此依赖项。最终选择安装的包将取决于您的用例。RUN apt-get update && apt install -y opensslCMD

  • 使用 ``RUN apt-get update && apt install -y openssl``` 对我不起作用。我的配置部分是: ``` FROM debian:buster-slim RUN apt-get update & apt-get install -y extra-runtime-dependency openssl & rm -rf /var/lib/apt/lists/* COPY - -from=builder /usr/local/cargo/bin/app /usr/local/bin/app # 这里是 cmd 代码 ``` (2认同)
  • 最后我让它与 debian:bullseye-slim 图像一起工作 (2认同)