Shell ldconfig返回非零代码:1

Shell ldconfig返回非零代码:1,shell,docker,Shell,Docker,我试图构建一个包含oracledb客户机和NodeJ的docker映像,但是我得到了一个错误,命令'/bin/sh-c ldconfig'返回了一个非零代码:1onRUN ldconfig 我找不到任何东西来帮助我解决这个问题,在过去的两个小时里,我一直试图自己解决这个问题,我需要帮助 其他信息: 奇怪的是,当我使用docker exec-it container\u name sh进入容器,然后执行ldconfig时,它运行正常 这是dockerfile: FROM node:9.11-alp

我试图构建一个包含oracledb客户机和NodeJ的docker映像,但是我得到了一个错误,
命令'/bin/sh-c ldconfig'返回了一个非零代码:1
on
RUN ldconfig

我找不到任何东西来帮助我解决这个问题,在过去的两个小时里,我一直试图自己解决这个问题,我需要帮助

其他信息:
奇怪的是,当我使用
docker exec-it container\u name sh
进入容器,然后执行
ldconfig
时,它运行正常

这是
dockerfile

FROM node:9.11-alpine
WORKDIR /
COPY ./oracle /opt/oracle
RUN apk update && \
    apk add --no-cache libaio && \
    mkdir /etc/ld.so.conf.d && \
    sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf" && \
    ldconfig
ENV LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH
ENV PATH=/opt/oracle/instantclient_12_2:$PATH
CMD ["tail", "-f", "/dev/null"]
请参阅我的博客文章系列,其中展示了在Oracle Linux容器中使用即时客户端

另请参见节点oracledb安装手册一节


最新的示例自动提取所需的RPM-无需手动下载。Oracle Instant Client 19将连接到Oracle DB 11.2或更高版本。

在alpine
ldconfig
中需要配置目录作为参数

试着像这样运行
ldconfig

ldconfig /etc/ld.so.conf.d

从理论上讲,这应该是可行的。

您是否可以在某个地方看到该命令产生的实际错误?可能是权限问题。不,我找不到查看错误消息的方法。。我怀疑这是权限问题,因为它使用
root
用户运行指令。从您发布的docker文件判断,它从未说过在任何地方运行
sh-c ldconfig
。根据错误消息,我必须假设docker在第8行获取ldconfig,并将其作为
sh-c ldconfig
执行,但它不应该这样做,因为它通过
&
与前一行链接。另外,如果它在前一行(
sh-c'.'
)中这样做了,你会有一些奇怪的行为。亲爱的,我很快就会处理好的。我确实让我的节点(超薄版)和oracle即时客户端正常工作,但最终得到了一个700MB的映像。我希望您能有一个更好的解决方案。这并没有回答OP的问题。它解决了OP的问题,即如何在容器中使用node oracledb。简单的回答是“不要使用阿尔卑斯山,使用一些有效且受支持的东西”这不是问题的答案。糟糕的阿尔卑斯山。再一次。