-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathclouddrive2.conf
More file actions
85 lines (73 loc) · 3.27 KB
/
Copy pathclouddrive2.conf
File metadata and controls
85 lines (73 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# --- 基础信息 / Basic Information ---
local app_id="clouddrive2"
local app_name="clouddrive2"
local app_text="一个全方位的云存储管理平台,旨在无缝集成多个云存储服务"
local app_url="https://www.clouddrive2.com"
local docker_name="CloudDrive2"
local docker_port="19798"
local app_size="1"
# --- 核心逻辑 / Core Logic ---
ensure_shared_mount() {
echo "[信息] 检查 Docker 挂载传播模式..."
# 判断 Docker 是否由 systemd 管理
if command -v systemctl >/dev/null 2>&1 && systemctl is-active docker >/dev/null 2>&1; then
echo "[信息] Docker 以 systemd 服务运行"
mkdir -p /etc/systemd/system/docker.service.d
# 如果配置文件不存在,则创建并设置 MountFlags=shared
if [ ! -f /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf ]; then
cat <<EOF >/etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf
[Service]
MountFlags=shared
EOF
echo "[信息] 已创建 MountFlags=shared 配置文件"
# --- 必须步骤:让 systemd 重新加载配置 ---
systemctl daemon-reload
echo "[信息] systemd 配置已重新加载"
# --- 必须步骤:重启 Docker 服务让新配置生效 ---
systemctl restart docker.service
echo "[信息] Docker 已重启,MountFlags=shared 已生效"
else
echo "[信息] MountFlags 已配置,跳过"
fi
else
# Docker 非 systemd 管理,提示用户手动处理
echo "[信息] Docker 不是由 systemd 管理"
# 自动生成宿主机挂载路径
cloudnas_mount=$(df -P /home/CloudNAS | tail -1 | awk '{print $6}')
echo "[警告] 如果需要共享挂载,请手动执行以下命令:"
echo "sudo mount --make-shared $cloudnas_mount"
echo "此操作在系统重启后不会保留,请手动执行以上命令,具体请查看官网帮助教程"
fi
}
docker_app_install() {
# 安装前:确保 Docker 共享挂载已就绪
ensure_shared_mount
# 必须在 /home/docker/ 下创建应用目录
mkdir -p /home/docker/clouddrive2 && cd /home/docker/clouddrive2
# 下载并配置 compose 文件 / Download compose file
# 务必使用 gh_proxy 变量 / Use gh_proxy for China access
curl -L -o compose.yml "${gh_proxy}raw.githubusercontent.com/hellokun985/docker-app/refs/heads/main/CloudDrive2/CloudDrive2.yml"
# 端口处理(使用变量以便用户自定义)
sed -i "s/19798:19798/${docker_port}:19798/g" compose.yml
# 启动容器 / Start container
docker compose up -d
echo "安装完成 / Install Complete"
# --- 内部函数立即调用 ---
check_docker_app_ip
}
docker_app_update() {
cd /home/docker/clouddrive2
docker compose pull
docker compose up -d
echo "更新完成 / Update Complete"
}
docker_app_uninstall() {
cd /home/docker/clouddrive2
# 停止并删除镜像 / Stop and remove images
docker compose down --rmi all
# 彻底物理删除目录 / Clean up directory
rm -rf /home/docker/clouddrive2 /home/CloudNAS
echo "卸载完成 / Uninstall Complete"
}
# --- 注册 (必须包含) / Registration (Mandatory) ---
docker_app_plus