如何从GitHub仓库构建Docker镜像?构建时apk安装命令执行失败求助
解决Docker构建中
apk add git python失败的问题 问题根源
你使用的mhart/alpine-node:6.17基于的Alpine Linux版本过于老旧(对应Alpine 3.12分支),该版本的官方软件源已停止维护,同时此版本中不存在名为python的直接安装包,需指定安装python2(当时Alpine默认Python版本为2)。
修复方案
修改Dockerfile中的依赖安装段,做以下调整:
- 替换失效的官方源为对应版本的存档源
- 明确安装
python2而非python - 合并
RUN指令以减少镜像层数,添加--no-cache避免缓存冗余
修改后的Dockerfile片段
# Install base dependencies RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.12/main" > /etc/apk/repositories && \ echo "http://dl-cdn.alpinelinux.org/alpine/v3.12/community" >> /etc/apk/repositories && \ apk update --no-cache && \ apk add --no-cache git python2
完整修复后的Dockerfile
FROM mhart/alpine-node:6.17 ENV NODE_ENV "development" ENV NODE_PATH "/usr/src/app/node_modules" # Install base dependencies RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.12/main" > /etc/apk/repositories && \ echo "http://dl-cdn.alpinelinux.org/alpine/v3.12/community" >> /etc/apk/repositories && \ apk update --no-cache && \ apk add --no-cache git python2 # Prepare app directory WORKDIR /usr/src/app COPY . /usr/src/app RUN npm install VOLUME /tmp/specs # Start the app ENTRYPOINT ["/usr/src/app/node_modules/dredd/bin/dredd"]
补充说明
- 老旧Alpine版本的官方源已归档,必须替换为对应版本的存档源才能正常拉取安装包
- 若你的代码实际依赖Python 3,可将
python2替换为python3(该版本Alpine仓库中存在此包) - 使用
--no-cache可避免在镜像中残留apk缓存,有效减小镜像体积
内容的提问来源于stack exchange,提问作者fxnice
相关产品推荐
相关产品推荐

