-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathdnsmgr.conf
More file actions
108 lines (94 loc) · 2.97 KB
/
Copy pathdnsmgr.conf
File metadata and controls
108 lines (94 loc) · 2.97 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# --- 基础信息 / Basic Information ---
local app_id="dnsmgr"
local app_name="彩虹聚合DNS管理系统"
local app_text="彩虹聚合DNS一站式管理阿里云、腾讯云、Cloudflare等解析,支持容灾自动切换"
local app_url="https://github.com/netcccyun/dnsmgr"
local docker_name="dnsmgr-web"
local docker_port="8081" # Web访问端口
local app_size="1"
# --- 核心逻辑 / Core Logic ---
docker_app_install() {
# 1. 环境准备
local base_dir="/home/docker/dnsmgr"
local db_password=$(date +%s | sha256sum | base64 | head -c 16) # 自动生成随机密码
mkdir -p "$base_dir/web" "$base_dir/mysql/conf" "$base_dir/mysql/logs" "$base_dir/mysql/data"
cd "$base_dir"
# 2. 写入 MySQL 配置文件 (解决 SQL_MODE 问题)
cat <<EOF > mysql/conf/my.cnf
[mysqld]
user=mysql
character-set-server=utf8mb4
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
EOF
# 3. 生成 Docker Compose 文件
cat <<EOF > docker-compose.yml
services:
dnsmgr-web:
image: netcccyun/dnsmgr:latest
container_name: ${docker_name}
stdin_open: true
tty: true
restart: always
ports:
- "${docker_port}:80"
volumes:
- "./web:/app/www"
depends_on:
- dnsmgr-mysql
networks:
- dnsmgr-network
dnsmgr-mysql:
image: mysql:5.7
container_name: dnsmgr-mysql
restart: always
# ports:
# - "${mysql_port}:3306"
volumes:
- "./mysql/conf/my.cnf:/etc/mysql/my.cnf"
- "./mysql/logs:/logs"
- "./mysql/data:/var/lib/mysql"
environment:
- MYSQL_ROOT_PASSWORD=${db_password}
- TZ=Asia/Shanghai
networks:
- dnsmgr-network
networks:
dnsmgr-network:
driver: bridge
EOF
# 4. 启动并自动创建数据库
echo "正在启动容器并初始化数据库..."
docker compose up -d
# 等待数据库启动并创建库名
echo "等待数据库初始化 (约15秒)..."
sleep 15
docker exec dnsmgr-mysql mysql -uroot -p${db_password} -e "CREATE DATABASE IF NOT EXISTS dnsmgr;"
# 5. 权限处理
chmod -R 777 "$base_dir/web"
# 6. 打印信息给用户
echo "------------------------------------------------"
echo "安装完成!请在浏览器访问进行配置。"
check_docker_app_ip
echo ""
echo "数据库配置信息 (安装界面填写):"
echo "数据库地址: dnsmgr-mysql"
echo "数据库端口: 3306"
echo "数据库用户名: root"
echo "数据库密码: ${db_password}"
echo "数据库库名: dnsmgr"
echo "------------------------------------------------"
}
docker_app_update() {
cd /home/docker/dnsmgr
docker compose pull
docker compose up -d
echo "更新完成 / Update Complete"
}
docker_app_uninstall() {
cd /home/docker/dnsmgr
docker compose down --rmi all
rm -rf /home/docker/dnsmgr
echo "卸载完成,数据已清理。"
}
# --- 注册 / Registration ---
docker_app_plus