#!/usr/bin/env python3 """修复 docker-compose.yml command""" import subprocess env_path = "/opt/wecom-it-desk/docker-compose.yml" # 读取 with open(env_path, 'r', encoding='utf-8') as f: content = f.read() # 找到并修复 command 部分 old = """/bin/sh -c " echo '>>> 跳过数据库迁移(已手动stamp到最新版本)...' && # cd /app && PYTHONPATH=/app alembic upgrade head && echo '>>> 启动 API 服务...' && uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 2 """ """ new = """/bin/sh -c 'echo >>> 跳过数据库迁移(已手动stamp到最新版本)... && echo >>> 启动 API 服务... && uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 2'""" if old in content: content = content.replace(old, new) proc = subprocess.Popen(['sudo', 'tee', env_path], stdin=subprocess.PIPE, stdout=subprocess.PIPE) proc.stdin.write(content.encode('utf-8')) proc.stdin.close() proc.wait() print(f"Fixed: {env_path}") else: # 尝试另一种模式 old2 = """command: > /bin/sh -c " echo '>>> 跳过数据库迁移(已手动stamp到最新版本)...' && # cd /app && PYTHONPATH=/app alembic upgrade head && echo '>>> 启动 API 服务...' && uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 2 \"""" new2 = """command: /bin/sh -c 'echo >>> 跳过数据库迁移(已手动stamp到最新版本)... && echo >>> 启动 API 服务... && uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 2'""" if old2 in content: content = content.replace(old2, new2) proc = subprocess.Popen(['sudo', 'tee', env_path], stdin=subprocess.PIPE, stdout=subprocess.PIPE) proc.stdin.write(content.encode('utf-8')) proc.stdin.close() proc.wait() print(f"Fixed (alt): {env_path}") else: print("Pattern not found!") # 打印实际内容用于调试 import re m = re.search(r'command:.*?\n', content) if m: print(f"Found: {repr(m.group())}") print("Done!")