fix ui buttons and docker compose

This commit is contained in:
malvm 2026-08-05 09:50:00 +04:00
parent d91eca366f
commit fed058d4c8
3 changed files with 12 additions and 6 deletions

View file

@ -4,16 +4,17 @@ services:
context: . context: .
image: yolo-train-webui:latest image: yolo-train-webui:latest
ports: ports:
# The training API has no built-in user accounts, so expose it locally only. - "8000:8000"
- "127.0.0.1:8000:8000"
volumes: volumes:
- ./datasets:/workspace/datasets - ./datasets:/workspace/datasets
- ./runs:/workspace/runs - ./runs:/workspace/runs
- ./models:/workspace/models - ./models:/workspace/models
- ./models/.config:/root/.config/Ultralytics - ./models/.config:/root/.config/Ultralytics
environment: environment:
# Optional: tracking URI for external MLflow server (e.g. http://host.docker.internal:5000 or http://your-mlflow-host:5000) # Tracking URI for external MLflow server. Change host/IP if running MLflow on another machine/container.
YOLO_WEBUI_MLFLOW_TRACKING_URI: http://host.docker.internal:5000 YOLO_WEBUI_MLFLOW_TRACKING_URI: http://host.docker.internal:5000
extra_hosts:
- "host.docker.internal:host-gateway"
# Uncomment the block below on Linux with NVIDIA GPU to pass the graphics card into the container: # Uncomment the block below on Linux with NVIDIA GPU to pass the graphics card into the container:
# deploy: # deploy:
# resources: # resources:

View file

@ -24,6 +24,7 @@ document.addEventListener('DOMContentLoaded', () => {
const mlflowInputs = document.querySelectorAll('.mlflow-fields input'); const mlflowInputs = document.querySelectorAll('.mlflow-fields input');
const trackingUriInput = document.getElementById('tracking-uri'); const trackingUriInput = document.getElementById('tracking-uri');
const mlflowHeaderLink = document.getElementById('mlflow-header-link'); const mlflowHeaderLink = document.getElementById('mlflow-header-link');
const taskSelect = document.getElementById('task');
// --- Dynamic Model Selection --- // --- Dynamic Model Selection ---
const standardModels = { const standardModels = {
@ -34,6 +35,7 @@ document.addEventListener('DOMContentLoaded', () => {
obb: ['yolo11n-obb.pt', 'yolo11s-obb.pt', 'yolo11m-obb.pt', 'yolo11l-obb.pt', 'yolo11x-obb.pt'] obb: ['yolo11n-obb.pt', 'yolo11s-obb.pt', 'yolo11m-obb.pt', 'yolo11l-obb.pt', 'yolo11x-obb.pt']
}; };
let discoveredModels = []; let discoveredModels = [];
let discoveredDatasets = [];
function getDiscoveredModelValue(model) { function getDiscoveredModelValue(model) {
return model.path || model.name; return model.path || model.name;
@ -99,7 +101,6 @@ document.addEventListener('DOMContentLoaded', () => {
} }
} }
const taskSelect = document.getElementById('task');
// Session Controls // Session Controls
const sessionSelect = document.getElementById('session-select'); const sessionSelect = document.getElementById('session-select');
@ -701,7 +702,7 @@ document.addEventListener('DOMContentLoaded', () => {
} }
// --- Datasets Auto-Discovery --- // --- Datasets Auto-Discovery ---
let discoveredDatasets = [];
async function loadDatasetsList() { async function loadDatasetsList() {
try { try {
@ -932,6 +933,7 @@ document.addEventListener('DOMContentLoaded', () => {
} }
if (configForm) { if (configForm) {
configForm.addEventListener('submit', (e) => e.preventDefault());
configForm.addEventListener('input', () => { configForm.addEventListener('input', () => {
const config = getFormConfig(); const config = getFormConfig();
localStorage.setItem('draft_config', JSON.stringify(config)); localStorage.setItem('draft_config', JSON.stringify(config));
@ -1249,5 +1251,8 @@ document.addEventListener('DOMContentLoaded', () => {
loadSessionsList(); loadSessionsList();
connectWebSocket(); connectWebSocket();
connectExportWebSocket(); connectExportWebSocket();
}).catch(err => {
console.error('Initial load error:', err);
addLogLine('Ошибка загрузки конфигурации: ' + err.message, 'warning');
}); });
}); });

View file

@ -15,7 +15,7 @@ def test_compose_is_local_and_does_not_require_nvidia() -> None:
assert set(compose["services"].keys()) == {"webui"} assert set(compose["services"].keys()) == {"webui"}
webui = compose["services"]["webui"] webui = compose["services"]["webui"]
assert webui["ports"] == ["127.0.0.1:8000:8000"] assert webui["ports"] == ["8000:8000"]
assert "deploy" not in webui assert "deploy" not in webui
assert "YOLO_WEBUI_MLFLOW_TRACKING_URI" in webui["environment"] assert "YOLO_WEBUI_MLFLOW_TRACKING_URI" in webui["environment"]