#!/bin/bash # XXL-Job容器名称 CONTAINER_NAME="xxl-job-server" # XXL-Job镜像版本 XXL_JOB_VERSION="2.4.0" # 镜像地址 IMAGE_URL="docker.tanuki.vip/xxl-job-admin-kingbase:${XXL_JOB_VERSION}" # 映射端口(宿主:容器) PORT="9600" # 环境变量配置 DB_URL="jdbc:kingbase8://10.10.2.102:54321/itc?currentSchema=xxl_job&useUnicode=true&characterEncoding=UTF-8" DB_USERNAME="itc_dne" DB_PASSWORD="itc_dne" DB_DRIVER="com.kingbase8.Driver" # 创建目录并设置权限函数(如需数据持久化可添加) create_dirs() { # 示例:如需挂载配置目录可在此添加 # if [ ! -d "$CONFIG_PATH" ]; then # mkdir -p "$CONFIG_PATH" # echo "创建配置目录: $CONFIG_PATH" # chmod -R 777 "$CONFIG_PATH" # echo "设置配置目录权限: $CONFIG_PATH" # fi return 0 } # 部署XXL-Job deploy() { if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then echo "XXL-Job容器 $CONTAINER_NAME 已存在并运行中" return 1 fi if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then echo "发现已停止的XXL-Job容器,正在启动..." docker start $CONTAINER_NAME return 0 fi echo "开始部署XXL-Job容器..." create_dirs docker run -d --restart always \ -p $PORT:8080 \ --name $CONTAINER_NAME \ -e "PARAMS=--spring.datasource.url=$DB_URL --spring.datasource.username=$DB_USERNAME --spring.datasource.password=$DB_PASSWORD --spring.datasource.driver-class-name=$DB_DRIVER" \ $IMAGE_URL if [ $? -eq 0 ]; then echo "XXL-Job容器部署成功!" echo "容器名称: $CONTAINER_NAME" echo "端口映射: $PORT" else echo "XXL-Job容器部署失败!" fi } # 查看日志 logs() { if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then echo "XXL-Job容器 $CONTAINER_NAME 不存在" return 1 fi echo "查看XXL-Job容器日志 (按Ctrl+C退出)..." docker logs -f --tail 200 $CONTAINER_NAME } # 重启容器 restart() { if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then echo "XXL-Job容器 $CONTAINER_NAME 不存在" return 1 fi echo "正在重启XXL-Job容器..." docker restart $CONTAINER_NAME if [ $? -eq 0 ]; then echo "XXL-Job容器重启成功!" else echo "XXL-Job容器重启失败!" fi } # 删除容器 remove() { if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then echo "XXL-Job容器 $CONTAINER_NAME 不存在" return 1 fi echo "警告:此操作将删除XXL-Job容器" read -p "确定要删除吗?(y/n) " confirm if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then echo "取消删除操作" return 0 fi echo "正在停止并删除XXL-Job容器..." docker stop $CONTAINER_NAME docker rm $CONTAINER_NAME if [ $? -eq 0 ]; then echo "XXL-Job容器删除成功!" else echo "XXL-Job容器删除失败!" fi } # 显示帮助 show_help() { echo "XXL-Job容器管理脚本" echo "用法: $0 [命令]" echo "命令列表:" echo " deploy - 部署并启动XXL-Job容器" echo " logs - 查看XXL-Job容器日志" echo " restart - 重启XXL-Job容器" echo " remove - 删除XXL-Job容器" echo " help - 显示帮助信息" } # 主逻辑 case "$1" in deploy) deploy ;; logs) logs ;; restart) restart ;; remove) remove ;; help) show_help ;; *) echo "未知命令: $1" show_help exit 1 ;; esac