#!/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 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 }