# 定义CI/CD流水线的阶段 stages: - build # 第一阶段:构建应用程序 - build-docker # 第二阶段:构建Docker镜像 - deploy # 第三阶段:部署应用程序 cache: # 缓存内容 paths: - node_modules/ - docker/dist/ # 定义全局变量 variables: CONTAINER_NAME: 'central-monitor' # Docker容器名称 DOCKER_TAG: '1.0.0' # Docker镜像标签版本 # 构建任务 build-job: stage: build # 指定此任务属于build阶段 script: # 打印编译开始信息 - echo "Compiling the code..." # 使用Maven编译Java项目,跳过测试 - npm i -g pnpm && pnpm i && pnpm build # 打印编译完成信息 - echo "Compile complete." # 从Docker Hub拉取OpenJDK基础镜像 - docker pull nginx:1.27.3 # 打印拉取完成信息 - echo "docker pull complete." # 使用Dockerfile构建Docker镜像,并打上标签 - cd docker && pwd && ls && docker build -f Dockerfile -t $CONTAINER_NAME:$DOCKER_TAG . # 打印构建成功信息 - echo "Application successfully deployed." # 部署任务 deploy-job: stage: deploy # 指定此任务属于deploy阶段 environment: production # 指定部署环境为production script: # 打印部署开始信息 - echo "Deploying application..." # 停止正在运行的容器(如果存在),|| true确保命令失败不会中断脚本 - docker stop $CONTAINER_NAME || true # 删除容器(如果存在) - docker rm $CONTAINER_NAME || true # 运行新的Docker容器 # -d: 后台运行 # -p: 端口映射(7070和8000) # --name: 容器名称 # --restart always: 总是自动重启 - docker run -d -p 8800:80 --name $CONTAINER_NAME --restart always $CONTAINER_NAME:$DOCKER_TAG # 打印部署成功信息 - echo "Application successfully deployed."