skywalking-agent-docker镜像

FROM centos:7.9.2009
USER root

# 定义 Arthas 目录环境变量
ENV ARTHAS_HOME=/opt/arthas

# 更改 YUM 源并清理缓存
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak && \
    rm -rf /etc/yum.repos.d/* && \
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \
    sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo && \
    yum clean all && yum makecache fast && yum update -y && \
    yum install -y \
      gcc gcc-c++ kernel-devel yum-utils device-mapper-persistent-data lvm2 \
      tcpdump vim git wget net-tools libpcap libpcap-devel automake make \
      pam-devel openldap-devel cyrus-sasl-devel openssl-devel telnet rsync \
      bzip2 iptables lsof curl su-exec expect net-tools \
      gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel \
      libpng-devel openssl-devel bison flex \
      glibc-devel libstdc++ && \
    yum clean all && rm -rf /var/cache/yum/*

# 设置时区
RUN rm -f /etc/localtime && \
    ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone && \
    echo "TZ=Asia/Shanghai" >> /etc/profile

# 安装 JDK 17
COPY jdk-17.0.14_linux-x64_bin.rpm /home/
RUN rpm -ivh --nodeps /home/jdk-17.0.14_linux-x64_bin.rpm && \
    rm -f /home/jdk-17.0.14_linux-x64_bin.rpm && \
    echo "export JAVA_HOME=/usr/java/jdk-17" >> /etc/profile && \
    echo "export CLASSPATH=.:\$JAVA_HOME/lib" >> /etc/profile && \
    echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile && \
    source /etc/profile
    
COPY arthas-bin /opt/arthas/
ENV ARTHAS_HOME=/opt/arthas
# 赋予可执行权限
RUN chmod +x $ARTHAS_HOME/*

# 安装 Arthas(修正版本和链接)
#RUN mkdir -p $ARTHAS_HOME && wget -O $ARTHAS_HOME/arthas-boot.jar https://repo1.maven.org/maven2/com/aliyun/arthas/arthas-boot/3.7.8/arthas-boot-3.7.8.jar && echo "alias arthas='java -jar $ARTHAS_HOME/arthas-boot.jar'" >> /etc/profile

# 处理 SkyWalking Agent

# 处理 SkyWalking Agent(修复目录不存在问题)
RUN mkdir -p /usr/skywalking  # 提前创建上级目录
ADD apache-skywalking-java-agent-9.4.0.tgz /tmp/
# 验证解压后的目录名称,若正确则继续移动
RUN if [ -d "/tmp/skywalking-agent" ]; then \
        mv /tmp/skywalking-agent /usr/skywalking/agent && \
        ls /usr/skywalking/agent/ && \
        mv /usr/skywalking/agent/optional-plugins/* /usr/skywalking/agent/plugins/ && \
        mv /usr/skywalking/agent/optional-reporter-plugins/* /usr/skywalking/agent/plugins/ && \
        rm -rf /tmp/*; \
    else \
        echo "Error: /tmp/skywalking-agent not found"; \
        exit 1; \
    fi


# 系统配置(最终修复 exit code:1 问题)
RUN set -ex && \
    # 安装必要组件:SELinux 工具、iptables 基础命令
    yum install -y selinux-policy-targeted policycoreutils iptables && \
    # 修改 SELinux 配置文件为 disabled
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && \
    # 优化 SELinux 状态判断语法(添加括号确保优先级)
    if (sestatus 2>/dev/null || true) | grep -q "SELinux status:.*enabled"; then \
        # 容错处理:即使 setenforce 失败(如 SELinux 已禁用),也不终止步骤
        setenforce 0 || true; \
    else \
        echo "SELinux is already disabled, skipping setenforce"; \
    fi && \
    # 确保 iptables 命令存在后清理规则,容错执行失败
    if [ -x "$(command -v iptables)" ]; then \
        iptables -F && iptables -X || true; \
    else \
        echo "iptables command not found, skipping cleanup"; \
    fi && \
    # 清理 yum 缓存
    yum clean all

# 环境变量
ENV LANG=C.UTF-8 \
    TZ=Asia/Shanghai \
    MYPATH=/ \
    JAVA_HOME=/usr/java/jdk-17 \
    PATH=$PATH:/usr/java/jdk-17/bin

# 处理入口脚本
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

WORKDIR $MYPATH

EXPOSE 22 8080 8888 8563 3568 6123 6122 6124 8081 443

MAINTAINER app

ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

skywalking-agent-docker镜像_第1张图片 

你可能感兴趣的:(docker)