Docker构建报错:No rule to make target `hiredis'问题求助
解决Dockerfile安装Redis时的"No rule to make target `hiredis'"错误
问题根源在于Dockerfile的指令执行上下文:每个RUN指令都在独立的容器环境中运行,cd redis-stable/deps仅对当前RUN生效,后续RUN会回到默认工作目录(通常是/),导致make命令找不到hiredis的Makefile,从而触发报错。
修正方案是将Redis下载、编译相关命令合并到同一个RUN中,用&&串联,确保全程在正确的目录下执行:
# 合并yum安装命令,减少镜像层数,安装后清理缓存 RUN yum install -y java-17-amazon-corretto.x86_64 tar wget gcc make \ && yum -y update \ && yum clean all # 合并Redis下载、解压、编译安装流程,保证目录上下文连续 RUN wget http://download.redis.io/redis-stable.tar.gz \ && tar xvzf redis-stable.tar.gz \ && cd redis-stable/deps \ && make hiredis jemalloc linenoise lua geohash-int \ && cd .. \ && make install \ # 清理临时文件,缩减镜像体积 && rm -rf /redis-stable*
额外优化建议:
- 合并多个
RUN指令可减少镜像层数,提升构建效率与镜像性能 - 执行
yum clean all清理yum缓存,避免不必要的体积占用 - 安装完成后删除Redis源码包,进一步压缩镜像大小
内容的提问来源于stack exchange,提问作者Anisha Mathais
相关产品推荐
相关产品推荐

