Docker构建失败(exit code:100)求助:apt-get安装依赖报错
问题分析与解决方案
核心问题1:包管理器混用+冗余安装导致构建失败
你的基础镜像是python:3.8-slim(基于Debian系统),但存在两个关键错误:
- 最后一行使用了Alpine专属的
apk命令,Debian系统不支持该包管理器 apt-get install中重复安装了python3和python3-pip,而python:3.8-slim镜像已自带这些工具,同时python-dev是Python2的开发包,Debian系中Python3对应包名为python3-dev
核心问题2:容器持续重启的根源
原Dockerfile的CMD ["bash"]会导致容器启动后,bash进程因无交互立刻退出,Docker会不断尝试重启容器,这就是之前容器反复重启的原因。
修正后的Dockerfile
FROM python:3.8-slim ENV PYTHONFAULTHANDLER=1 ENV PYTHONUNBUFFERED=1 ENV PYTHONHASHSEED=random ENV PYTHONDONTWRITEBYTECODE 1 ENV PIP_NO_CACHE_DIR=off ENV PIP_DISABLE_PIP_VERSION_CHECK=on ENV PIP_DEFAULT_TIMEOUT=100 # 合并apt命令,清理缓存减少镜像体积,修正包名 RUN apt-get update && \ apt-get install -y --no-install-recommends \ python3-dev \ build-essential \ python3-venv \ ffmpeg \ linux-headers-amd64 && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* RUN mkdir -p /code ADD . /code WORKDIR /code RUN pip3 install -r requirements.txt # 替换CMD,确保容器前台运行(如果是Python应用,替换为你的启动命令) CMD ["tail", "-f", "/dev/null"]
关键修改说明
- 移除冗余依赖:删掉
python3、python3-pip的安装命令,利用镜像自带工具 - 修正包名:把
python-dev改为python3-dev,指定linux-headers-amd64适配x86_64架构 - 优化apt命令:合并
update和install到一层,清理缓存缩小镜像体积 - 替换错误包管理器命令:用Debian系的
apt-get安装linux-headers,删除无效的apk命令 - 修复容器重启:将
CMD ["bash"]替换为tail -f /dev/null(保持容器前台运行),如果是Python应用,直接改为你的业务启动命令,比如CMD ["python", "app.py"]
后续验证
在Windows终端重新执行构建命令:
docker-compose --env-file config\config.env up --build
如果仍出现apt安装失败(exit code 100),可尝试:
- 检查网络连接,确保容器能访问Debian软件源
- 更换国内apt源,在
apt-get update前添加:RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
内容的提问来源于stack exchange,提问作者timur.g
相关产品推荐
相关产品推荐

