fix: Install docker CLI and mount docker socket to resolve docker command not found error; add warning note about black VNC screen

This commit is contained in:
Admin 2026-07-03 11:08:51 +04:00
parent 2f92e81ec5
commit 371cabd3d9
4 changed files with 11 additions and 5 deletions

View file

@ -13,6 +13,7 @@ RUN apt-get update && apt-get install -y \
libffi-dev \ libffi-dev \
shared-mime-info \ shared-mime-info \
fonts-dejavu \ fonts-dejavu \
docker.io \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
# Копирование requirements и установка зависимостей # Копирование requirements и установка зависимостей

View file

@ -11,6 +11,7 @@ services:
- MUTT_DIR=/home/matrixhasyou/mutt - MUTT_DIR=/home/matrixhasyou/mutt
- GOOGLE_CREDS_FILE=/home/matrixhasyou/domovoy_google_creds.json - GOOGLE_CREDS_FILE=/home/matrixhasyou/domovoy_google_creds.json
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./logs:/app/logs - ./logs:/app/logs
- ./exports:/app/exports - ./exports:/app/exports
- ./data:/app/data - ./data:/app/data
@ -36,6 +37,7 @@ services:
- MUTT_DIR=/home/matrixhasyou/mutt - MUTT_DIR=/home/matrixhasyou/mutt
- GOOGLE_CREDS_FILE=/home/matrixhasyou/domovoy_google_creds.json - GOOGLE_CREDS_FILE=/home/matrixhasyou/domovoy_google_creds.json
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./logs:/app/logs - ./logs:/app/logs
- ./exports:/app/exports - ./exports:/app/exports
- ./data:/app/data - ./data:/app/data

View file

@ -888,7 +888,7 @@ async def api_gis_status(username: str = Depends(get_current_admin)):
except Exception as e: except Exception as e:
return JSONResponse(status_code=500, content={"message": str(e)}) return JSONResponse(status_code=500, content={"message": str(e)})
@app.post("/api/infra/run_sudrf_parser") @app.post("/api/sudrf/run")
async def api_run_sudrf_parser(username: str = Depends(get_current_admin)): async def api_run_sudrf_parser(username: str = Depends(get_current_admin)):
try: try:
subprocess.run(["docker", "exec", "lkm37-gis-scraper", "pkill", "-f", "sudrf_reaper.py"]) subprocess.run(["docker", "exec", "lkm37-gis-scraper", "pkill", "-f", "sudrf_reaper.py"])
@ -897,7 +897,7 @@ async def api_run_sudrf_parser(username: str = Depends(get_current_admin)):
except Exception as e: except Exception as e:
return JSONResponse(status_code=500, content={"message": str(e)}) return JSONResponse(status_code=500, content={"message": str(e)})
@app.get("/api/infra/sudrf_status") @app.get("/api/sudrf/status")
async def api_sudrf_status(username: str = Depends(get_current_admin)): async def api_sudrf_status(username: str = Depends(get_current_admin)):
try: try:
proc = subprocess.run(["docker", "exec", "lkm37-gis-scraper", "ps", "aux"], capture_output=True, text=True) proc = subprocess.run(["docker", "exec", "lkm37-gis-scraper", "ps", "aux"], capture_output=True, text=True)

View file

@ -47,9 +47,12 @@
<i class="bi bi-display"></i> СЕССИЯ И ЛОГИ СКАНИРОВАНИЯ <i class="bi bi-display"></i> СЕССИЯ И ЛОГИ СКАНИРОВАНИЯ
</div> </div>
<div class="card-body d-flex flex-column"> <div class="card-body d-flex flex-column">
<a href="http://192.168.10.116:6080/vnc.html" target="_blank" class="btn btn-outline-info w-100 py-3 mb-3"> <a href="http://192.168.10.116:6080/vnc.html" target="_blank" class="btn btn-outline-info w-100 py-3 mb-2">
<i class="bi bi-window-fullscreen"></i> ОТКРЫТЬ VNC ЭКРАН (noVNC) <i class="bi bi-window-fullscreen"></i> ОТКРЫТЬ VNC ЭКРАН (noVNC)
</a> </a>
<div class="alert alert-warning py-2 mb-3 text-warning border-warning" style="font-size: 0.75rem; background: transparent;">
<i class="bi bi-exclamation-triangle"></i> <strong>Внимание:</strong> Если жатва не запущена, VNC-экран будет пустым (черным). Браузер Chromium автоматически откроется на экране сразу после нажатия кнопки «Запустить жатву».
</div>
<div class="d-flex justify-content-between align-items-center mb-2"> <div class="d-flex justify-content-between align-items-center mb-2">
<span class="small text-muted">ЛОГИ В РЕАЛЬНОМ ВРЕМЕНИ:</span> <span class="small text-muted">ЛОГИ В РЕАЛЬНОМ ВРЕМЕНИ:</span>
@ -75,7 +78,7 @@ document.getElementById('runSudrfParserBtn').addEventListener('click', async fun
btn.innerHTML = '<span class="spinner-border spinner-border-sm"></span> СЕССИЯ ЗАПУЩЕНА...'; btn.innerHTML = '<span class="spinner-border spinner-border-sm"></span> СЕССИЯ ЗАПУЩЕНА...';
try { try {
const response = await fetch('/api/infra/run_sudrf_parser', { method: 'POST' }); const response = await fetch('/api/sudrf/run', { method: 'POST' });
const result = await response.json(); const result = await response.json();
alert(result.message); alert(result.message);
} catch (e) { } catch (e) {
@ -92,7 +95,7 @@ async function refreshSudrfStatus() {
const logs = document.getElementById('sudrfLogs'); const logs = document.getElementById('sudrfLogs');
try { try {
const response = await fetch('/api/infra/sudrf_status'); const response = await fetch('/api/sudrf/status');
const data = await response.json(); const data = await response.json();
if (data.alive) { if (data.alive) {