#!/bin/bash set -e DEPLOY_DIR="/data/aq-flex" ENV_FILE="$DEPLOY_DIR/.env" mkdir -p "$DEPLOY_DIR" # 自动生成强密码 gen_password() { < /dev/urandom tr -dc 'A-Za-z0-9' | head -c 16 } # 获取主机 IP(排除 loopback 和 docker 网络) HOST_IP=$(ip -4 addr | grep inet | grep -v 127.0.0.1 | grep -v docker | awk '{print $2}' | cut -d/ -f1 | head -n 1) if [ -z "$HOST_IP" ]; then echo "❌ 无法自动获取主机 IP 地址,请手动设置 API_BASE_URL" exit 1 fi # 自动生成内容 MYSQL_ROOT_PASSWORD=$(gen_password) MYSQL_DATABASE="aq_flex" MYSQL_USER="aq_flex" MYSQL_PASSWORD=$(gen_password) MYSQL_IMAGE="swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0.42" REDIS_IMAGE="swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/redis:6.2.7-debian-11-r11" API_IMAGE="registry.cn-qingdao.aliyuncs.com/xingc/aq-flex-api:25120901" WEB_IMAGE="registry.cn-qingdao.aliyuncs.com/xingc/aq-flex-web:25120901" APP_IMAGE="registry.cn-qingdao.aliyuncs.com/xingc/aq-flex-app:25120901" API_PORT="10010" WEB_PORT="10000" APP_PORT="10001" API_BASE_URL="http://$HOST_IP:$API_PORT" # 可选: Docker 登录配置 #DOCKER_REGISTRY="" #DOCKER_USERNAME="" #DOCKER_PASSWORD="" echo "👉 安装 Docker(如未安装)..." if [ -z "$(command -v docker 2>/dev/null)" ]; then curl -fsSL https://get.docker.com -o install-docker.sh sudo sh install-docker.sh --mirror Aliyun fi if [ -z "$(command -v docker-compose 2>/dev/null)" ] && [ -z "$(docker compose version 2>/dev/null)" ]; then echo "⚠️ Docker Compose 插件未安装,需手动安装 compose 插件。" exit 1 fi echo "✅ Docker 安装完成" #echo "🔐 Docker 登录..." #echo "$DOCKER_PASSWORD" | docker login "$DOCKER_REGISTRY" -u "$DOCKER_USERNAME" --password-stdin echo "📁 创建部署目录结构..." mkdir -p $DEPLOY_DIR/mysql/conf mkdir -p $DEPLOY_DIR/mysql/data mkdir -p $DEPLOY_DIR/app/.cache mkdir -p $DEPLOY_DIR/app/logs mkdir -p $DEPLOY_DIR/app/upload echo "📝 生成 mysqld.cnf 配置文件..." cat > $DEPLOY_DIR/mysql/conf/mysqld.cnf < $ENV_FILE < $DEPLOY_DIR/docker-compose.yml <