56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
#!/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!")
|