Dockerfile安装OpenSSL 1.1.1报错(exit code:127)如何解决?
修复Dockerfile中OpenSSL编译的127错误
错误原因很明确:Docker里每个RUN指令都是独立的shell进程,前一个RUN cd openssl-1.1.1u只会在当前进程的会话中切换目录,下一个RUN执行时又回到了默认工作目录,所以找不到./config脚本,触发了"command not found"的127退出码。
有两种简单的修复方式:
方式一:合并多个RUN指令为一个
用&&把命令串联起来,让它们在同一个shell进程中执行,目录切换会持续生效:
RUN wget -O - https://www.openssl.org/source/openssl-1.1.1u.tar.gz | tar zxf - && \ cd openssl-1.1.1u && \ ./config --prefix=/usr/local
用\换行可以保持Dockerfile的可读性。
方式二:使用WORKDIR指定工作目录
用WORKDIR指令设置后续所有RUN的默认工作目录,这样就不用每次手动cd了:
RUN wget -O - https://www.openssl.org/source/openssl-1.1.1u.tar.gz | tar zxf - WORKDIR /openssl-1.1.1u RUN ./config --prefix=/usr/local
额外提醒:编译OpenSSL通常还需要后续的make和make install步骤,记得把这些也补充到Dockerfile中,否则仅执行config不会完成安装。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

