stages: - build - deploy variables: DOCKER_IMAGE_NAME: file-system-server DOCKER_TAG: latest # 构建镜像 build_image: stage: build image: docker:20.10.16 services: - docker:20.10.16-dind script: - docker build -t $DOCKER_IMAGE_NAME:$DOCKER_TAG . # 如果有私有仓库,可以在这里 push # - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY # - docker push $DOCKER_IMAGE_NAME:$DOCKER_TAG only: - main # 部署服务 deploy_service: stage: deploy image: docker/compose:latest script: # 停止旧容器(如果存在) - docker-compose down --remove-orphans || true # 重新构建并启动服务 - docker-compose up -d --build # 清理未使用的镜像 - docker image prune -f tags: - shell # 假设您的 GitLab Runner 是 Shell Executor,可以直接操作宿主机 Docker only: - main