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"]

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88278.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88278.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/88278.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库开发运维的集成:弥合开发与运维之间的鸿沟

在传统的软件开发工作流程中,数据库变更往往是事后才考虑的问题。应用程序代码遵循定义明确的开发运维实践,包括版本控制、自动测试和持续部署,而数据库变更则经常是由数据库管理员手动执行的高风险操作。这种脱节造成了瓶颈,带来…

PiscTrace应用:从 YOLO-Pose 到深蹲与引体向上计数:实时健身动作分析与实现

随着健身行业的发展,越来越多的智能应用涌现,用于帮助健身者更好地记录和分析运动情况。特别是在体能训练中,俯卧撑和引体向上是两个非常常见的动作,它们通常用来锻炼上半身力量和耐力。为了使训练更加科学和高效,实时…

【unity】webCanvas.enabled = false;和webCanvas.gameObject.SetActive(false);的优缺点比较

在 Unity 中,webCanvas.gameObject.SetActive(false) 和 webCanvas.enabled false 是两种不同的隐藏 UI 的方式,它们的核心区别在于作用范围和对组件状态的影响。理解这些差异能帮助你避免初始化失败、性能问题和逻辑错误。 1核心区别 gameObject.SetAc…

深入探索 pnpm:高效磁盘利用与灵活的包管理解决方案

引言 在现代 JavaScript 开发中,依赖管理效率直接影响开发体验。传统工具如 npm 和 yarn 在大型项目中常面临磁盘冗余和性能瓶颈。pnpm(Performant npm)通过创新的硬链接和符号链接机制,解决了这些痛点。本文将深入解析 pnpm 的核…

Hive MetaStore的实现和优化

在大数据领域,数据管理与存储至关重要,Hive MetaStore(HMS)作为 Hive 数据仓库的核心组件,承担着元数据管理的关键职责。随着数据规模不断膨胀,其性能与稳定性面临挑战。本文将深入剖析 HMS 的实现机制&…

一文读懂动态规划:多种经典问题和思路

一、动态规划算法的思想与核心概念框架 1. 动态规划的基本思想 动态规划(Dynamic Programming, DP)是一种通过将复杂问题分解为重叠子问题,并利用子问题的解来高效解决原问题的方法。其核心思想是避免重复计算,通过存储中间结果&a…

阿幸课堂随机点名

代码功能 这个是一个HTML网页端,简单来说就是可以双击之后运行进行点名。 当然,不局限于课堂点名 代码功能 Excel 导入增强: 增加了列选择器,可以指定从哪一列读取学生姓名 增加了起始行选择器,可以跳过标题行或其…

LeetCode 560: 和为K的子数组

题目描述给定一个整数数组 nums 和一个整数 k,请统计并返回该数组中和为 k 的连续子数组的个数。示例 1:输入:nums [1,1,1], k 2 输出:2示例 2:输入:nums [1,2,3], k 3 输出:2提示&#xff…

微软官方C++构建工具:历史演变、核心组件与现代实践指南

引言:C构建工具的战略意义 在Windows生态系统中,​​微软C构建工具​​(Microsoft C Build Tools)构成了数百万开发者和应用程序的技术基石。从早期的MS-DOS命令行工具到如今支持​​跨平台开发​​的现代化工具链,微…

探索Cocos_CoilTheRope:一款创新的游戏引擎扩展项目

探索Cocos_CoilTheRope:一款创新的游戏引擎扩展项目 去发现同类优质开源项目:https://gitcode.com/ 是一个基于Cocos2d-x游戏引擎的扩展库,旨在为开发者提供一种简便的方法来实现绳子缠绕和物理交互效果。该项目由DreamLXW开发并维护,为游戏…

爬虫-正则表达式

在线正则表达式测试OSCHINA.NET在线工具,ostools为开发设计人员提供在线工具,提供jsbin在线 CSS、JS 调试,在线 Java API文档,在线 PHP API文档,在线 Node.js API文档,Less CSS编译器,MarkDown编译器等其他在线工具https://tool.oschina.net/…

【BTC】数据结构

目录 那比特币区块链的组织形式到底是以链表的形式,还是树的形式呢? 区块头和区块体与默克尔树的关系 默克尔证明详解 区块链和链表最大的区别就是区块链用哈希指针代替了普通指针。 链表的指针就是指向一个结构体在内存中的地址,而哈希指…

飞算 JavaAI:让 Java 开发效率飙升的智能助手,日常开发全场景应用指南

飞算 JavaAI:让 Java 开发效率飙升的智能助手 ,日常开发全场景应用指南 在 Java 开发的日常工作中,开发者常常面临各类重复性劳动与逻辑复杂度挑战。飞算 JavaAI 作为专注于 Java 领域的智能开发助手,能够覆盖从代码生成到项目维护…

8.2 文档预处理模块(二)

一、从0开始:简易RAG实现 在构建更复杂的 RAG 架构之前,我们先从最基础的版本入手。整个流程可以分为以下几个关键步骤: 1.数据导入:加载并预处理原始文本数据,为后续处理做好准备。 2.文本分块:将长文本…

【系统与工具】Linux——Linux简介、安装、简单使用

计算机概论与Linux简介 计算机概论Linux介绍与版本 Linux的规划与安装 Linux与硬件平台密切相关规划硬件与Linux安装 主机规划与磁盘分区安装CentOS、多重引导 简单使用 帮助手册文本编辑器关机 0. Linux介绍与版本 操作系统(Linux):高效…

从视频数据到数字孪生:如何构建虚拟与现实的桥梁?

概述 视频数据与三维场景融合渲染技术通过将动态视频与静态三维模型结合,利用GPU加速、WebGL渲染、数字孪生等技术,实现虚拟与现实的交互式融合。该技术广泛应用于智慧城市、工业监控、虚拟现实、游戏特效等领域,能够提升场景的直观性和用户沉…

【笔记】开源 AI Agent 项目 V1 版本 [新版] 部署 日志

kortix-ai/suna at v1 一、最新版本号 V1 二、部署截图 本地开发环境仍然依赖于 Poetry 环境&#xff1a; &#xff08;Python>3.11,<3.13&#xff09; 创建本地 Poetry 虚拟环境 Python 多版本环境治理理念驱动的系统架构设计&#xff1a;三维治理、四级隔离、五项自…

NumPy-梯度与导数计算详解

NumPy-梯度与导数计算详解一、梯度与导数的基本概念1. 导数的定义2. 梯度的定义二、NumPy中的梯度计算函数&#xff1a;np.gradient()1. 函数语法2. 一维数组的梯度计算3. 多维数组的梯度计算三、基于梯度的导数近似方法1. 前向差分2. 中心差分四、实际应用场景1. 函数优化2. 数…

Redis架构安全

先学习&#xff1a;Redis架构简介-CSDN博客 Redis压测 Redis一般应用于高并发的场景&#xff0c;所以一定要对Redis的性能做压测。 Redis提供了压测脚本redis-benchmark&#xff0c;可以对Redis进行快速的基准测试。 # 20个线程&#xff0c;100W个请求&#xff0c;测试redi…

自动化Trae Apollo参数解释的批量获取

自动化Trae Apollo参数解释的批量获取一、背景介绍二、设计思路三、操作步骤1. 环境准备2. 获取界面坐标3. 定位关键元素4. 执行自动化查询5. 获取结果四、完整代码五、扩展应用一、背景介绍 在自动驾驶开发中&#xff0c;百度Apollo平台提供了大量参数用于调整系统行为。Trae…