**上下文:**我正在尝试在我的Spring项目中使用OpenTelemetry-JavaAgent。
如果我在Dockerfile中使用curl获取文件:
RUN curl https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.30.0/opentelemetry-javaagent.jar -o /tmp/opentelemetry-javaagent.jar && \
chmod 540 /tmp/opentelemetry-javaagent.jar
当我运行Docker镜像时,我得到以下错误:
Error opening zip file or JAR manifest missing : /tmp/opentelemetry-javaagent.jar
Error occurred during initialization of VM
agent library failed to init: instrument
但是,如果我手动下载该文件并添加它:
ADD opentelemetry-javaagent.jar /tmp/opentelemetry-javaagent.jar
RUN chmod 540 /tmp/opentelemetry-javaagent.jar
它工作正常。我可能错过了一些明显的东西,但不能把我的手指上。有人知道我错过了什么吗?先谢了。
以下是完整的Dockerfile:
FROM eclipse-temurin:17-jre
ARG RUN_JAVA_VERSION=1.3.8
ENV APP my-project
ENV JAVA_OPTIONS="-XshowSettings:vm"
ENV SPRING_PROFILES_ACTIVE=docker
ENV JAVA_TOOL_OPTIONS -agentlib:jdwp=transport=dt_socket,address=10200,server=y,suspend=n -javaagent:/tmp/opentelemetry-javaagent.jar -Dotel.service.name=format-adapter -Dotel.traces.exporter=zipkin
WORKDIR /app
RUN apt-get update -q \
&& apt-get install -y --no-install-recommends wget curl \
&& rm -Rf /var/lib/apt /var/cache/apt
RUN curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /app/run-java.sh && \
chmod 540 /app/run-java.sh
#THIS DOESN'T WORK
RUN curl https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.30.0/opentelemetry-javaagent.jar -o /tmp/opentelemetry-javaagent.jar && \
chmod 540 /tmp/opentelemetry-javaagent.jar
##THIS WORKS
#ADD opentelemetry-javaagent.jar /tmp/opentelemetry-javaagent.jar
#RUN chmod 540 /tmp/opentelemetry-javaagent.jar
ADD build/libs/${APP}-*.jar /app/${APP}.jar
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost:${SERVER_PORT}/actuator/health || exit 1
ENTRYPOINT ["/app/run-java.sh"]
1条答案
按热度按时间hmae6n7t1#
给定的URL会生成一个重定向,除非您添加
-L
开关,否则curl
不会遵循该重定向,因此Dockerfile
中的curl
命令不会下载任何内容。作为替代,
wget
默认遵循重定向(我看到您安装了curl
和wget
,但基础映像已经包含这两个);但是,更好的Dockerfile
特定的替代方法是ADD
命令:在任何情况下,您都可以删除
RUN apt-get
块以获得更小的图像。