Docker 镜像集成 Arthas

很多时候,应用在 docker 里出现 arthas 无法工作的问题,是因为应用没有安装 JDK ,而是安装了 JRE 。如果只安装了 JRE,则会缺少很多 JAVA 的命令行工具和类库,Arthas 也没办法正常工作。下面介绍两种常见的在 Docker 里使用 JDK 的方式。

参考:
https://arthas.aliyun.com/doc/docker.html
https://blog.51cto.com/daisywei/2427434

基于 Alpine 镜像

https://hub.docker.com/_/openjdk/

比如:

FROM openjdk:8-jdk-alpine

把 Arthas 安装到基础镜像里

COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas

安装 Arthas 会用到的依赖

RUN apk update \
    && apk add --no-cache bash curl ospd-netstat busybox-extras tini jq \
    && rm /var/cache/apk/*
Spring Boot 项目 Dockerfile 示例:
#FROM openjdk:11-jre-alpine
#FROM openjdk:11-jre-slim
#FROM openjdk:11-jdk-alpine
#FROM openjdk:11-jdk-slim
#FROM openjdk:11-jdk-oracle
#FROM openjdk:8-jre-alpine
#FROM openjdk:8-jre-slim
#FROM openjdk:8-jdk-alpine
#FROM openjdk:8-jdk-slim
#FROM openjdk:8-jdk-oracle

FROM openjdk:8-jdk-alpine

RUN echo "https://mirrors.aliyun.com/alpine/v3.9/main/" > /etc/apk/repositories
RUN echo "https://mirrors.aliyun.com/alpine/v3.9/community/" >> /etc/apk/repositories
#RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.9/main/" > /etc/apk/repositories

# 把 Arthas 安装到基础镜像里 https://arthas.aliyun.com/doc/docker.html
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas

# 安装 Arthas 会用到的依赖
RUN apk update \
    && apk add --no-cache bash curl ospd-netstat busybox-extras tini jq \
    && rm /var/cache/apk/*

# 申明临时卷
VOLUME /logs
VOLUME /tmp

# 拷贝本地Jar包到根目录
ADD ./target/app-1.0.0-SNAPSHOT.jar /

# 挂着启动脚本
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["sh", "-c", "java -jar app-1.0.0-SNAPSHOT.jar"]

#ENTRYPOINT ["java", "-jar", "app-1.0.0-SNAPSHOT.jar"]
作者:Jeebiz  创建时间:2023-02-12 01:48
最后编辑:Jeebiz  更新时间:2024-08-02 14:21