diff --git a/deploy.sh b/deploy.sh index f68488c..706e6d3 100644 --- a/deploy.sh +++ b/deploy.sh @@ -11,37 +11,59 @@ if ! command -v docker &> /dev/null; then exit 1 fi -# 检查是否安装了Docker Compose - echo "检查Docker Compose是否安装..." - if ! command -v docker-compose &> /dev/null; then +# 检查并更新Docker Compose和Buildx + echo "检查并更新Docker工具..." + + # 检查是否安装了Docker Compose + if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then echo "Docker Compose未安装,正在安装..." - # 安装Docker Compose - curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/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 - # 检查安装是否成功 - if ! command -v docker-compose &> /dev/null; then - echo "错误: Docker Compose安装失败,请手动安装" - exit 1 - fi - echo "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文件夹,则克隆仓库 - git clone http://8.137.125.67:4000/Swt29/Project_app.git /opt/project_app + # 如果目录不存在.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 - cd /opt/project_app + + # 检查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 "检查环境变量配置..." diff --git a/docker-compose.yml b/docker-compose.yml index c909a53..de673e1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: app: build: .