eclipse-temurin:17-alpine的Dockerfile本地构建正常,Azure Pipeline构建失败
Azure Pipeline构建ActiveMQ Docker镜像失败排查
问题概述
Azure Pipeline构建Docker镜像时,执行apk add curl步骤失败,提示找不到curl包;但在代理运行的同一服务器上手动执行docker build可成功完成构建,且自上次成功构建后未修改过Dockerfile。
构建错误日志
##[error]#5 [2/6] RUN apk add --update --no-cache curl && curl -l http://archive.apache.org/dist/activemq/5.17.4/apache-activemq-5.17.4-bin.tar.gz -o activemq.tar.gz && tar -xvf activemq.tar.gz && mv apache-activemq-5.17.4 /opt/ && rm activemq.tar.gz ... Permission denied ##[error]#5 0.571 ERROR: unable to select packages: ##[error]#5 0.571 curl (no such package): ##[error]#5 0.571 required by: world[curl] ##[error]#5 ERROR: process "/bin/sh -c apk add --update --no-cache curl && curl -l http://archive.apache.org/dist/activemq/$ACTIVEMQ_VERSION/$ACTIVEMQ_NAME-bin.tar.gz -o activemq.tar.gz && tar -xvf activemq.tar.gz && mv $ACTIVEMQ_NAME /opt/ && rm activemq.tar.gz" did not complete successfully: exit code: 1
使用的Dockerfile内容
FROM eclipse-temurin:17-alpine ENV ACTIVEMQ_VERSION 5.17.4 ENV ACTIVEMQ_NAME apache-activemq-$ACTIVEMQ_VERSION EXPOSE 8161 EXPOSE 61616 RUN apk add --update --no-cache curl && \ curl -l http://archive.apache.org/dist/activemq/$ACTIVEMQ_VERSION/$ACTIVEMQ_NAME-bin.tar.gz -o activemq.tar.gz && \ tar -xvf activemq.tar.gz && \ mv $ACTIVEMQ_NAME /opt/ && \ rm activemq.tar.gz WORKDIR /opt/$ACTIVEMQ_NAME COPY activemq.xml . COPY jetty.xml . WORKDIR /opt/$ACTIVEMQ_NAME/bin ENTRYPOINT ["./activemq","console"]
本地构建验证结果
~ docker build -t activemq:latest ./docker/activemq ... => [2/6] RUN apk add --update --no-cache curl && curl -l http://archive.apache.org/dist/activemq/5.17.4/apache-activemq-5.17.4-bin.tar.gz -o activemq.tar.gz && tar -xvf 440.9s => [3/6] WORKDIR /opt/apache-activemq-5.17.4 0.0s => [4/6] COPY activemq.xml . 0.1s => [5/6] COPY jetty.xml . 0.0s => [6/6] WORKDIR /opt/apache-activemq-5.17.4/bin 0.0s => exporting to image 0.4s => => exporting layers 0.4s => => writing image sha256:778721aca0caa1de9293b88a9c94fc180c5772522e7d5df6680dd5bb79075c36 0.0s => => naming to docker.io/library/activemq:latest
可能的原因及解决方向
- Alpine软件源访问异常:Azure Pipeline代理环境的网络无法正常连接Alpine默认软件源,导致找不到curl包。本地服务器网络不受限制可正常访问。解决方法:在
apk add命令前替换为国内镜像源,例如:RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \ apk add --update --no-cache curl && \ # 后续原有命令... - Docker缓存问题:代理服务器上的
eclipse-temurin:17-alpine基础镜像缓存过旧,或缓存的镜像源配置失效。解决方法:在Pipeline的docker build步骤中添加--no-cache参数,强制重新拉取基础镜像并构建。 - 网络策略限制:Azure Pipeline所在网络存在防火墙或代理规则,阻止了对Alpine软件源和Apache归档服务器的访问。解决方法:测试代理服务器能否访问Alpine源地址(如
http://dl-cdn.alpinelinux.org/alpine/v3.17/main)和ActiveMQ下载地址,若无法访问则需调整网络策略。 - 权限连带错误:日志中的
Permission denied可能是源访问失败的衍生错误,但可检查Pipeline执行账号是否拥有足够的Docker操作权限,确保其能正常拉取镜像、执行构建命令。
内容的提问来源于stack exchange,提问作者JacobJ
相关产品推荐
相关产品推荐

