From 3bc1867f4daf150a63ee35a2abe3fdf5db0fe04a Mon Sep 17 00:00:00 2001 From: Olia Lisa Date: Wed, 15 Jul 2026 23:09:31 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84docker=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/docker.sh | 83 +++++++++++++++++++++++++++++++++++++++++++++++ bin/run.sh | 14 -------- bin/utils/base.sh | 35 -------------------- 3 files changed, 83 insertions(+), 49 deletions(-) create mode 100644 bin/docker.sh delete mode 100644 bin/run.sh diff --git a/bin/docker.sh b/bin/docker.sh new file mode 100644 index 0000000..10d71b8 --- /dev/null +++ b/bin/docker.sh @@ -0,0 +1,83 @@ +#!/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 +} + + +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 +} \ No newline at end of file diff --git a/bin/run.sh b/bin/run.sh deleted file mode 100644 index 2f3a8de..0000000 --- a/bin/run.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -run(){ - local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - local docker_compose_file="$script_dir/../docker-compose.yml" - local running_count=$(docker-compose -f "$docker_compose_file" ps -q --filter "status=running" | wc -l) - - # 如果容器已启动 - if [ "$running_count" -gt 0 ]; then - docker-compose -f "$docker_compose_file" down # 关闭容器 - fi - - docker-compose -f "$docker_compose_file" up -d # 启动容器 -} diff --git a/bin/utils/base.sh b/bin/utils/base.sh index 19f878e..2687e4a 100644 --- a/bin/utils/base.sh +++ b/bin/utils/base.sh @@ -31,41 +31,6 @@ check_jq() { fi } -# 检查 Docker 是否已安装 -check_docker() { - if command -v docker >/dev/null 2>&1; then - return 0 - else - echo "Docker 未安装" - return 1 - fi -} - -# 检查 docker-compose 是否已安装 -check_docker_compose() { - if command -v docker-compose >/dev/null 2>&1; then - return 0 - elif docker compose version >/dev/null 2>&1; then ## Docker 内置 compose 已安装 - return 0 - else - echo "docker-compose 未安装" - return 1 - fi -} - -# 安装docker -install_docker(){ - echo 安装docker... - curl -fsSL https://get.docker.com | bash -s docker -} - -# 安装docker-compose -install_docker_compose(){ - echo 安装docker-compose... - wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/v2.29.0/docker-compose-linux-x86_64 - chmod +x /usr/local/bin/docker-compose -} - # 动态安装软件包 install_package() { local package_name=$1