----添加部署脚本和文档
This commit is contained in:
161
宝策/docker_skywalking-oap.sh
Normal file
161
宝策/docker_skywalking-oap.sh
Normal file
@ -0,0 +1,161 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 定义变量
|
||||
CONTAINER_NAME="skywalkingwalking-oap-server"
|
||||
IMAGE_NAME="apache/skywalking-oap-server:9.4.0" # SkyWalking OAP 镜像及版本
|
||||
DATA_DIR="/docker-data/skywalking/data" # 数据存储目录
|
||||
LOGS_DIR="/docker-data/skywalking/logs" # 日志目录
|
||||
PORT=12800 # OAP gRPC 端口
|
||||
PORT1=11800 # OAP REST 端口
|
||||
NETWORK_NAME="scm-net"
|
||||
SW_IP="10.10.2.102" # 固定IP
|
||||
ES_HOST="10.10.2.102" # 关联的Elasticsearch容器名称
|
||||
ES_PORT=9200 # Elasticsearch端口
|
||||
SW_STORAGE="elasticsearch7" # 存储类型(对应ES 7.x版本)
|
||||
|
||||
# 显示帮助信息
|
||||
show_help() {
|
||||
echo "使用方法: $0 [操作类型]"
|
||||
echo "操作类型:"
|
||||
echo " deploy - 部署并启动SkyWalking OAP Server容器"
|
||||
echo " remove - 停止并删除SkyWalking OAP Server容器及数据/配置/日志目录"
|
||||
echo " logs - 查看SkyWalking OAP Server容器日志"
|
||||
echo " help - 显示帮助信息"
|
||||
}
|
||||
|
||||
# 部署功能
|
||||
deploy_skywalking() {
|
||||
# 检查数据、配置、日志目录是否存在,不存在则创建
|
||||
for dir in "$DATA_DIR" "$LOGS_DIR"; do
|
||||
if [ ! -d "$dir" ]; then
|
||||
echo "创建目录: $dir"
|
||||
mkdir -p "$dir"
|
||||
chmod 777 "$dir" # 确保容器内用户可访问
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
# 检查容器是否已存在,存在则停止并删除
|
||||
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||
echo "停止并删除现有容器: $CONTAINER_NAME"
|
||||
docker stop $CONTAINER_NAME
|
||||
docker rm $CONTAINER_NAME
|
||||
fi
|
||||
|
||||
# 启动SkyWalking OAP Server容器
|
||||
echo "启动SkyWalking OAP Server容器..."
|
||||
docker run -d --privileged --name $CONTAINER_NAME --restart always \
|
||||
-p $PORT:12800 -p $PORT1:11800 -p 1234:1234 \
|
||||
-v $DATA_DIR:/skywalking/data \
|
||||
-v $LOGS_DIR:/skywalking/logs \
|
||||
-e TZ=Asia/Shanghai \
|
||||
-e "SW_STORAGE=elasticsearch" \
|
||||
-e "SW_STORAGE_ES_CLUSTER_NODES=$ES_HOST:$ES_PORT" \
|
||||
-e "SW_ES_VERSION=7" \
|
||||
-e "SW_STORAGE_ES_USE_HIGH_LEVEL_CLIENT=true" \
|
||||
$IMAGE_NAME
|
||||
|
||||
# 检查容器启动状态
|
||||
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
||||
echo "SkyWalking OAP Server容器启动成功!"
|
||||
echo "容器名称: $CONTAINER_NAME"
|
||||
echo "数据目录: $DATA_DIR"
|
||||
echo "日志目录: $LOGS_DIR"
|
||||
echo "gRPC端口: $PORT"
|
||||
echo "REST端口: $PORT1"
|
||||
echo "关联Elasticsearch: $ES_HOST:$ES_PORT"
|
||||
echo "存储类型: $SW_STORAGE"
|
||||
else
|
||||
echo "SkyWalking OAP Server容器启动失败,请检查日志获取详细信息。"
|
||||
docker logs $CONTAINER_NAME
|
||||
fi
|
||||
}
|
||||
|
||||
# 删除功能
|
||||
remove_skywalking() {
|
||||
# 检查容器是否存在
|
||||
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||
echo "停止容器: $CONTAINER_NAME"
|
||||
docker stop $CONTAINER_NAME
|
||||
|
||||
echo "删除容器: $CONTAINER_NAME"
|
||||
docker rm $CONTAINER_NAME
|
||||
else
|
||||
echo "容器 $CONTAINER_NAME 不存在"
|
||||
fi
|
||||
|
||||
# 检查数据目录是否存在
|
||||
if [ -d "$DATA_DIR" ]; then
|
||||
read -p "是否删除数据目录 $DATA_DIR? (y/n) " confirm
|
||||
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||
echo "删除数据目录: $DATA_DIR"
|
||||
rm -rf "$DATA_DIR"
|
||||
else
|
||||
echo "保留数据目录: $DATA_DIR"
|
||||
fi
|
||||
else
|
||||
echo "数据目录 $DATA_DIR 不存在"
|
||||
fi
|
||||
|
||||
# 检查配置目录是否存在
|
||||
if [ -d "$CONFIG_DIR" ]; then
|
||||
read -p "是否删除配置目录 $CONFIG_DIR? (y/n) " confirm
|
||||
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||
echo "删除配置目录: $CONFIG_DIR"
|
||||
rm -rf "$CONFIG_DIR"
|
||||
else
|
||||
echo "保留配置目录: $CONFIG_DIR"
|
||||
fi
|
||||
else
|
||||
echo "配置目录 $CONFIG_DIR 不存在"
|
||||
fi
|
||||
|
||||
# 检查日志目录是否存在
|
||||
if [ -d "$LOGS_DIR" ]; then
|
||||
read -p "是否删除日志目录 $LOGS_DIR? (y/n) " confirm
|
||||
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||
echo "删除日志目录: $LOGS_DIR"
|
||||
rm -rf "$LOGS_DIR"
|
||||
else
|
||||
echo "保留日志目录: $LOGS_DIR"
|
||||
fi
|
||||
else
|
||||
echo "日志目录 $LOGS_DIR 不存在"
|
||||
fi
|
||||
}
|
||||
|
||||
# 日志功能
|
||||
show_logs() {
|
||||
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||
echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..."
|
||||
docker logs -f $CONTAINER_NAME
|
||||
else
|
||||
echo "容器 $CONTAINER_NAME 不存在"
|
||||
fi
|
||||
}
|
||||
|
||||
# 主逻辑
|
||||
if [ $# -ne 1 ]; then
|
||||
show_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
deploy)
|
||||
deploy_skywalking
|
||||
;;
|
||||
remove)
|
||||
remove_skywalking
|
||||
;;
|
||||
logs)
|
||||
show_logs
|
||||
;;
|
||||
help)
|
||||
show_help
|
||||
;;
|
||||
*)
|
||||
echo "无效的操作类型: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user