错误:不可满足的约束:curl(缺少):为jmeter dockerfile生成时

错误:不可满足的约束:curl(缺少):为jmeter dockerfile生成时,jmeter,dockerfile,Jmeter,Dockerfile,我无法构建jmeter docker文件,出现以下错误 WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz: temporary error (try again later) WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.g

我无法构建jmeter docker文件,出现以下错误

    WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz: temporary error (try again later)
    WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz: temporary error (try again later)
    ERROR: unsatisfiable constraints:
      curl (missing):
        required by: world[curl]
      fontconfig (missing):
        required by: world[fontconfig]
      net-tools (missing):
        required by: world[net-tools]
      shadow (missing):
        required by: world[shadow]
      su-exec (missing):
        required by: world[su-exec]
      tcpdump (missing):
        required by: world[tcpdump]
      ttf-dejavu (missing):
        required by: world[ttf-dejavu]
    The command '/bin/sh -c chmod +x /usr/local/bin/entrypoint.sh  && apk add --no-cache     curl     fontconfig     net-tools     shadow     su-exec     tcpdump      ttf-dejavu  && cd /tmp/  && curl --location --silent --show-error --output apache-jmeter-${JMETER_VERSION}.tgz ${MIRROR}/apache-jmeter-${JMETER_VERSION}.tgz  && curl --location --silent --show-error --output apache-jmeter-${JMETER_VERSION}.tgz.sha512 ${MIRROR}/apache-jmeter-${JMETER_VERSION}.tgz.sha512  && sha512sum -c apache-jmeter-${JMETER_VERSION}.tgz.sha512  && mkdir -p /opt/  && tar x -z -f apache-jmeter-${JMETER_VERSION}.tgz -C /opt  && rm -R -f apache*  && sed -i '/RUN_IN_DOCKER/s/^# //g' ${JMETER_BIN}/jmeter  && sed -i '/PrintGCDetails/s/^# /: "${/g' ${JMETER_BIN}/jmeter && sed -i '/PrintGCDetails/s/$/}"/g' ${JMETER_BIN}/jmeter  && chmod +x ${JMETER_HOME}/bin/*.sh  && jmeter --version  && curl --location --silent --show-error --output /opt/alpn-boot-${ALPN_VERSION}.jar http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/${ALPN_VERSION}/alpn-boot-${ALPN_VERSION}.jar  && rm -fr /tmp/*' returned a non-zero code: 7
Dockerfile:

FROM openjdk:8u201-jdk-alpine3.9
LABEL maintainer="emmanuel.gaillardon@orange.fr"
STOPSIGNAL SIGKILL
ENV MIRROR https://www-eu.apache.org/dist/jmeter/binaries
ENV JMETER_VERSION 5.1.1
ENV JMETER_HOME /opt/apache-jmeter-${JMETER_VERSION}
ENV JMETER_BIN ${JMETER_HOME}/bin
ENV ALPN_VERSION 8.1.13.v20181017
ENV PATH ${JMETER_BIN}:$PATH
COPY entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh \
 && apk add --no-cache \
    curl \
    fontconfig \
    net-tools \
    shadow \
    su-exec \
    tcpdump  \
    ttf-dejavu \
 && cd /tmp/ \
 && curl --location --silent --show-error --output apache-jmeter-${JMETER_VERSION}.tgz ${MIRROR}/apache-jmeter-${JMETER_VERSION}.tgz \
 && curl --location --silent --show-error --output apache-jmeter-${JMETER_VERSION}.tgz.sha512 ${MIRROR}/apache-jmeter-${JMETER_VERSION}.tgz.sha512 \
 && sha512sum -c apache-jmeter-${JMETER_VERSION}.tgz.sha512 \
 && mkdir -p /opt/ \
 && tar x -z -f apache-jmeter-${JMETER_VERSION}.tgz -C /opt \
 && rm -R -f apache* \
 && sed -i '/RUN_IN_DOCKER/s/^# //g' ${JMETER_BIN}/jmeter \
 && sed -i '/PrintGCDetails/s/^# /: "${/g' ${JMETER_BIN}/jmeter && sed -i '/PrintGCDetails/s/$/}"/g' ${JMETER_BIN}/jmeter \
 && chmod +x ${JMETER_HOME}/bin/*.sh \
 && jmeter --version \
 && curl --location --silent --show-error --output /opt/alpn-boot-${ALPN_VERSION}.jar http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/${ALPN_VERSION}/alpn-boot-${ALPN_VERSION}.jar \
 && rm -fr /tmp/*
# Required for HTTP2 plugins
ENV JVM_ARGS -Xbootclasspath/p:/opt/alpn-boot-${ALPN_VERSION}.jar
WORKDIR /jmeter
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["jmeter", "--?"]

有人能告诉我,如果你所基于的基于阿尔卑斯山的JDK图像缺少什么,实际上是非常基本的(没有双关语的意思!),它几乎没有任何核心之外的东西

所以,它只是不包含您试图在那里使用的实用程序——它会立即向您报告缺少这些实用程序

不过,从好的方面来看,它确实很小,大约5MB

您可以做两件事:

1) 在使用软件包之前,请先通过Alpine软件包管理器
apk
安装软件包(类似于
apk add curl
,请通过
apk search
)自己找出确切的软件包名称)。 这是一种处理类似案件的“官方”方式

2) 基于一些更通用的Linux映像。但据我回忆,它会变得更大,几十兆。

错误表明无法安装
curl
fontconfig
和其他软件包,因为无法连接到主机并从主机获取文件

确保您的主机具有Internet,如果它确实符合答案中的建议

另外,请注意,当前已过时,因此我建议至少更改这一行:

ENV MIRROR https://www-eu.apache.org/dist/jmeter/binaries
对于这一点:

ENV MIRROR https://archive.apache.org/dist/jmeter/binaries
否则,即使您解决了Internet连接问题,也无法正常工作


或者,您可以将
JMETER_版本升级
以匹配

您是否检查了网络?你有代理人吗?如果是,您是否为守护进程和容器正确配置了它?从前两行警告来看,docker容器似乎无法访问url下载alpine软件包。