Dockerfile中pip安装aws-sam-cli失败,无法执行gcc,如何解决?
解决Docker安装aws-sam-cli时的gcc缺失错误
错误原因分析
从你提供的错误日志里,核心问题很明确:
unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
这是因为regex包在安装过程中需要编译C语言扩展,但你使用的openjdk:10.0.2-jdk基础镜像默认没有预装GCC编译器及相关构建工具,导致编译环节直接失败。
解决方案
既然不能更换基础镜像,那就给镜像补上编译所需的工具。在Dockerfile中添加安装Debian系的build-essential包的步骤(这个包包含了GCC、make等编译核心工具),同时为了避免镜像体积过大,安装后清理APT缓存。
修改后的完整Dockerfile如下:
FROM openjdk:10.0.2-jdk # 安装编译工具依赖,清理缓存减少镜像体积 RUN apt-get update && \ apt-get install -y build-essential && \ rm -rf /var/lib/apt/lists/* RUN curl -sSLO https://files.pythonhosted.org/packages/1d/64/a18a487b4391a05b9c7f938b94a16d80305bf0369c6b0b9509e86165e1d3/setuptools-41.0.1.zip && \ unzip setuptools-41.0.1.zip -d /tmp && \ cd /tmp/setuptools-41.0.1 && \ python setup.py install && \ rm -rf /tmp/* RUN curl -sSLO https://files.pythonhosted.org/packages/93/ab/f86b61bef7ab14909bd7ec3cd2178feb0a1c86d451bc9bccd5a1aedcde5f/pip-19.1.1.tar.gz && \ tar -xzvf pip-19.1.1.tar.gz -C /tmp && \ cd /tmp/pip-19.1.1 && \ python setup.py install && \ rm -rf /tmp/* ENV VERSION=0.17.0 RUN curl -sSLO https://github.com/awslabs/aws-sam-cli/releases/download/v$VERSION/aws-sam-cli-${VERSION}.x86_64_linux.bottle.tar.gz && \ tar -C /usr/local/bin -zxvf /aws-sam-cli-${VERSION}.x86_64_linux.bottle.tar.gz RUN pip install aws-sam-cli
改动说明
- 新增的
apt-get步骤:完成基础编译工具的安装,解决regex包编译时缺少GCC的问题。 rm -rf /var/lib/apt/lists/*:清理APT下载的缓存文件,避免镜像体积不必要的膨胀。
重新构建镜像后,pip install aws-sam-cli就能顺利完成所有依赖包的安装了。
内容的提问来源于stack exchange,提问作者overexchange
相关产品推荐
相关产品推荐

