Files
geg-gas-doc/宝策/docker_skywalking-ui.sh

123 lines
3.4 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 定义变量
CONTAINER_NAME="skywalking-ui"
IMAGE_NAME="apache/skywalking-ui:9.4.0" # SkyWalking UI 镜像及版本
LOGS_DIR="/docker-data/skywalking/ui/logs" # 日志目录
PORT=9601 # UI 访问端口
NETWORK_NAME="scm-net"
UI_IP="10.10.2.102" # 固定IP与ES、OAP在同一网段
OAP_HOST="10.10.2.102" # 关联的OAP服务器IP
OAP_PORT=12800 # OAP gRPC端口
# 显示帮助信息
show_help() {
echo "使用方法: $0 [操作类型]"
echo "操作类型:"
echo " deploy - 部署并启动SkyWalking UI容器"
echo " remove - 停止并删除SkyWalking UI容器及日志目录"
echo " logs - 查看SkyWalking UI容器日志"
echo " help - 显示帮助信息"
}
# 部署功能
deploy_skywalking_ui() {
# 检查日志目录是否存在,不存在则创建
if [ ! -d "$LOGS_DIR" ]; then
echo "创建日志目录: $LOGS_DIR"
mkdir -p "$LOGS_DIR"
chmod 777 "$LOGS_DIR" # 确保容器内用户可访问
fi
# 检查容器是否已存在,存在则停止并删除
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
echo "停止并删除现有容器: $CONTAINER_NAME"
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
fi
# 启动SkyWalking UI容器
echo "启动SkyWalking UI容器..."
docker run -d --privileged --name $CONTAINER_NAME --restart always \
-p $PORT:8080 \
-v $LOGS_DIR:/skywalking/ui/logs \
-e TZ=Asia/Shanghai \
-e "SW_OAP_ADDRESS=http://$OAP_HOST:$OAP_PORT" \
$IMAGE_NAME
# 检查容器启动状态
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
echo "SkyWalking UI容器启动成功"
echo "容器名称: $CONTAINER_NAME"
echo "日志目录: $LOGS_DIR"
echo "访问端口: $PORT"
echo "关联OAP服务器: $OAP_HOST:$OAP_PORT"
echo "访问地址: http://localhost:$PORT"
else
echo "SkyWalking UI容器启动失败请检查日志获取详细信息。"
docker logs $CONTAINER_NAME
fi
}
# 删除功能
remove_skywalking_ui() {
# 检查容器是否存在
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 "$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_ui
;;
remove)
remove_skywalking_ui
;;
logs)
show_logs
;;
help)
show_help
;;
*)
echo "无效的操作类型: $1"
show_help
exit 1
;;
esac