a-cloud-all/.devops/scripts/docker.py

64 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Docker Compose 部署模块
"""
import os
import subprocess
from pathlib import Path
from .log import Logger
def run_docker_compose(compose_dir, service_name):
"""
执行 docker-compose 命令
参数:
compose_dir: docker-compose.yml 所在目录
service_name: 要构建和启动的服务名称
返回:
bool: 成功返回 True失败返回 False
"""
try:
# 转换为绝对路径
compose_dir = Path(compose_dir).resolve()
Logger.separator()
Logger.info("开始 Docker 部署")
Logger.separator()
Logger.info(f"执行目录: {compose_dir}")
Logger.info(f"服务名称: {service_name}")
# 检查目录是否存在
if not compose_dir.exists():
Logger.error(f"目录不存在: {compose_dir}")
return False
# 检查 docker-compose.yml 是否存在
compose_file = compose_dir / "docker-compose.yml"
if not compose_file.exists():
Logger.error(f"docker-compose.yml 不存在: {compose_file}")
return False
# 构建镜像
if not Logger.run_command(f"docker-compose build --no-cache {service_name}", compose_dir):
Logger.error(f"镜像构建失败: {service_name}")
return False
Logger.info(f"镜像构建成功: {service_name}")
# 启动服务
if not Logger.run_command(f"docker-compose up -d {service_name}", compose_dir):
Logger.error(f"服务启动失败: {service_name}")
return False
Logger.info(f"服务启动成功: {service_name}")
Logger.info(f"Docker 部署完成: {service_name}")
return True
except Exception as e:
Logger.error(f"Docker 部署异常: {e}")
return False