66 lines
2.0 KiB
Bash
66 lines
2.0 KiB
Bash
#!/bin/bash
|
||
set -e
|
||
|
||
# ========= 可配置常量 =========
|
||
IMG_TAR="equip-reserve-latest.tar"
|
||
CONTAINER_NAME="equip-reserve"
|
||
HOST_PORT=5173
|
||
# 脚本所在目录作为根目录
|
||
BASE_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||
# 各挂载子目录
|
||
EQ_DIR="${BASE_DIR}/equip-reserve"
|
||
MYSQL_DATA_DIR="${EQ_DIR}/mysql_data"
|
||
DEVICE_IMG_DIR="${EQ_DIR}/device_image"
|
||
LOGS_DIR="${EQ_DIR}/logs"
|
||
# ==============================
|
||
|
||
echo "=== Equip-Reserve 一键部署 ==="
|
||
echo "脚本目录: ${BASE_DIR}"
|
||
|
||
# ===== 防火墙配置 =====
|
||
echo "正在配置防火墙..."
|
||
if command -v ufw >/dev/null 2>&1; then
|
||
# Ubuntu 默认 ufw
|
||
echo "使用ufw配置防火墙"
|
||
ufw allow 5173/tcp comment "equip-reserve web"
|
||
ufw reload
|
||
elif command -v firewall-cmd >/dev/null 2>&1; then
|
||
# CentOS/RHEL 7+
|
||
echo "使用firewall配置防火墙"
|
||
firewall-cmd --permanent --add-port=5173/tcp
|
||
firewall-cmd --reload
|
||
else
|
||
# 纯 iptables 保底
|
||
echo "暂时使用保底iptables配置,持久化需安装 iptables-persistent"
|
||
iptables -C INPUT -p tcp --dport 5173 -j ACCEPT 2>/dev/null || \
|
||
iptables -I INPUT -p tcp --dport 5173 -j ACCEPT
|
||
# 如有需要保存规则(Ubuntu 18 默认无持久化,需安装 iptables-persistent)
|
||
fi
|
||
echo "防火墙 5173 端口已放行"
|
||
|
||
echo "开启启动设备管理系统"
|
||
# 1. 导入镜像(如果已存在则跳过)
|
||
if ! docker images | grep -q "equip-reserve"; then
|
||
echo "正在导入离线镜像..."
|
||
docker load -i "${BASE_DIR}/${IMG_TAR}"
|
||
else
|
||
echo "镜像已存在,跳过导入"
|
||
fi
|
||
|
||
# 2. 如果旧容器还在,先停掉并删除
|
||
docker rm -f "${CONTAINER_NAME}" 2>/dev/null || true
|
||
|
||
# 3. 启动容器
|
||
echo "正在启动容器..."
|
||
docker run -d \
|
||
--name "${CONTAINER_NAME}" \
|
||
-p "${HOST_PORT}:5173" \
|
||
-v "${EQ_DIR}":/equip-reserve \
|
||
-v "${MYSQL_DATA_DIR}":/var/lib/mysql \
|
||
-v "${DEVICE_IMG_DIR}":/device_image \
|
||
-v "${LOGS_DIR}":/logs \
|
||
-e TZ=Asia/Shanghai \
|
||
equip-reserve:latest
|
||
|
||
echo "系统已启动!"
|
||
echo "浏览器访问:http://<离线机IP>:${HOST_PORT}" |