#!/bin/bash # 部署脚本 - 微信小程序后端服务 echo "开始部署微信小程序后端服务..." # 检查是否安装了Docker echo "检查Docker是否安装..." if ! command -v docker &> /dev/null; then echo "错误: Docker未安装,请先安装Docker" exit 1 fi # 检查并更新Docker Compose和Buildx echo "检查并更新Docker工具..." # 检查是否安装了Docker Compose if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then echo "Docker Compose未安装,正在安装..." # 使用Daocloud镜像加速安装 curl -L "https://get.daocloud.io/docker/compose/releases/download/latest/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose fi # 更新Docker Buildx到最新版本 echo "更新Docker Buildx..." docker buildx install 2>/dev/null || true docker buildx create --use 2>/dev/null || true echo "Docker工具检查完成" # 创建项目目录 echo "创建项目目录..." mkdir -p /opt/project_app/logs /opt/project_app/uploads /opt/project_app/mysql-data # 处理代码仓库或更新代码 echo "处理代码仓库..." if [ ! -d /opt/project_app/.git ]; then # 如果目录不存在.git文件夹,检查目录是否为空 if [ "$(ls -A /opt/project_app)" ]; then # 目录不为空,创建临时目录克隆后复制文件 echo "目标目录已存在且不为空,使用临时目录克隆代码..." git clone http://8.137.125.67:4000/Swt29/Project_app.git /tmp/project_app_temp # 复制.git文件夹和docker相关文件 cp -r /tmp/project_app_temp/.git /opt/project_app/ cp -r /tmp/project_app_temp/docker-compose.yml /opt/project_app/ 2>/dev/null || true cp -r /tmp/project_app_temp/Dockerfile /opt/project_app/ 2>/dev/null || true # 清理临时目录 rm -rf /tmp/project_app_temp else # 目录为空,直接克隆仓库 git clone http://8.137.125.67:4000/Swt29/Project_app.git /opt/project_app fi cd /opt/project_app else # 如果目录已存在.git文件夹,则更新代码 cd /opt/project_app git pull origin BOSS fi # 检查docker-compose.yml文件是否存在 if [ ! -f docker-compose.yml ]; then echo "警告: docker-compose.yml文件不存在,正在从仓库重新拉取..." git fetch origin BOSS git checkout origin/BOSS -- docker-compose.yml Dockerfile fi # 检查.env文件是否存在 echo "检查环境变量配置..." if [ ! -f .env ]; then echo "警告: .env文件不存在,请手动配置环境变量" echo "可以参考.env.example文件创建.env文件" else echo ".env文件已存在,跳过配置步骤" fi # 构建Docker镜像 echo "构建Docker镜像..." docker-compose build # 启动服务 echo "启动服务..." docker-compose up -d echo "部署完成!服务已启动并在后台运行。" echo "使用以下命令查看服务状态:docker-compose ps" echo "使用以下命令查看日志:docker-compose logs -f"