Files

97 lines
2.8 KiB
Bash

#!/bin/bash
# 重启docker容器
restart_docker() {
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
local COMPOSE_FILE="$SCRIPT_DIR/../docker-compose.yml"
check_docker_compose_file $COMPOSE_FILE
# 如果容器未运行,提示启动
local RUNNING_COUNT=$(docker compose -f $COMPOSE_FILE ps -q | wc -l)
if [ "$RUNNING_COUNT" -eq 0 ]; then
read -p "容器未启动,是否启动容器?(y/n): " CHOICE
case "$CHOICE" in
Y|y)
docker compose -f $COMPOSE_FILE up -d
return
;;
*)
echo "已取消启动"
return
;;
esac
fi
echo "正在重启容器..."
docker compose -f $COMPOSE_FILE down
docker compose -f $COMPOSE_FILE up -d
}
# 停止docker容器
stop_docker(){
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
local COMPOSE_FILE="$SCRIPT_DIR/../docker-compose.yml"
check_docker_compose_file $COMPOSE_FILE
local RUNNING_COUNT=$(docker compose -f $COMPOSE_FILE ps -q | wc -l)
if [ "$RUNNING_COUNT" -eq 0 ]; then
echo "容器未运行,无需停止"
return
fi
docker compose -f $COMPOSE_FILE down
}
update_docker_images(){
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
local COMPOSE_FILE="$SCRIPT_DIR/../docker-compose.yml" # docker-compose.yml文件路径
check_docker_compose_file $COMPOSE_FILE
echo "正在关闭容器.."
docker compose -f $COMPOSE_FILE down
echo "正在更新镜像.."
docker compose -f $COMPOSE_FILE pull
echo "正在删除未使用的镜像..."
docker image prune -f
echo "正在启动容器.."
docker compose -f $COMPOSE_FILE up -d
}
run() {
check_docker_compose
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
local COMPOSE_FILE="$SCRIPT_DIR/../docker-compose.yml"
check_docker_compose_file $COMPOSE_FILE
# 如果容器已经启动, 则先停止容器
if docker compose -f "$COMPOSE_FILE" ps | grep -q "Up"; then
docker compose -f "$COMPOSE_FILE" down
fi
# 启动docker容器
docker compose -f "$COMPOSE_FILE" up -d
}
# 检查docker版本是否支持docker compose子命令
check_docker_compose(){
# 检查 docker compose 子命令是否可用
if ! docker compose version &>/dev/null; then
echo "Docker 不支持 'compose' 子命令,请升级 Docker"
exit 1
fi
}
check_docker_compose_file(){
local COMPOSE_FILE=${1}
# 检查是否存在 docker-compose.yml 文件
if [ ! -f $COMPOSE_FILE ]; then
echo "Error: docker-compose.yml 文件不存在."
exit 1
fi
}