GSSAPI Docker镜像构建报错:/bin/sh: 1: krb5-config: not found
问题
本地Mac上Python应用已成功用GSSAPI生成Kerberos票据,但打包Docker镜像时,执行RUN pip install gssapi报错:/bin/sh: 1: krb5-config: not found。尽管提前执行了RUN DEBIAN_FRONTEND=noninteractive apt install -y krb5-config krb5-user,问题仍存在。原Dockerfile内容如下:
FROM python:slim-buster PYTHONDONTWRITEBYTECODE=1s PYTHONUNBUFFERED=1 COPY requirements.txt . COPY *.py . RUN python -m pip install --upgrade pip RUN apt-get -qq update && \ apt-get -yqq install krb5-user libpam-krb5 && \ apt-get -yqq clean \ RUN DEBIAN_FRONTEND=noninteractive apt install -y krb5-config krb5-user RUN pip install gssapi RUN python -m pip install -r requirements.txt RUN apt update -y && apt install g++ -y && apt install build-essential -y && apt install unixodbc-dev -y RUN apt install -y libgssapi-krb5-2 && apt install curl -y RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list RUN apt update -y && ACCEPT_EULA=Y apt-get install -y msodbcsql18 && ACCEPT_EULA=Y apt-get install -y mssql-tools18 RUN echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc CMD ["python","main.py"]
解决方案
你的Dockerfile存在几个关键问题,导致krb5-config未被正确安装:
环境变量定义错误
直接写PYTHONDONTWRITEBYTECODE=1s无效,需用ENV指令,且1s多了冗余字符s,正确写法是ENV PYTHONDONTWRITEBYTECODE=1。RUN命令语法错误
第一个apt-get clean后的反斜杠\后接了空格和下一个RUN,导致两个命令被强制合并执行,krb5-config的安装步骤未完成就跳到了pip install gssapi。依赖安装顺序错误
gssapi的pip安装需要编译依赖(krb5-config、build-essential、g++),这些必须在pip install gssapi之前安装,但原Dockerfile是在之后才安装编译依赖。重复安装冗余包
重复执行krb5-user安装命令,可合并到一次apt操作中。
修正后的Dockerfile:
FROM python:slim-buster # 设置Python环境变量 ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 # 复制项目文件 COPY requirements.txt . COPY *.py . # 更新系统并安装编译依赖和Kerberos组件 RUN apt-get -qq update && \ DEBIAN_FRONTEND=noninteractive apt-get -yqq install \ krb5-config krb5-user libpam-krb5 \ build-essential g++ unixodbc-dev \ libgssapi-krb5-2 curl && \ apt-get -yqq clean && \ rm -rf /var/lib/apt/lists/* # 升级pip并安装Python依赖 RUN python -m pip install --upgrade pip RUN pip install gssapi RUN python -m pip install -r requirements.txt # 安装MS SQL驱动和工具 RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ apt-get -qq update && \ ACCEPT_EULA=Y apt-get -yqq install msodbcsql18 mssql-tools18 && \ apt-get -yqq clean && \ rm -rf /var/lib/apt/lists/* && \ echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc CMD ["python", "main.py"]
关键调整说明:
- 将编译依赖和Kerberos组件合并到一次apt安装中,确保
krb5-config在pip install gssapi前完成安装。 - 用
ENV指令正确定义Python环境变量。 - 拆分错误合并的RUN命令,确保每个步骤独立执行。
- 添加
rm -rf /var/lib/apt/lists/*清理apt缓存,减小镜像体积。
内容的提问来源于stack exchange,提问作者KSS
相关产品推荐
相关产品推荐

