fix ui buttons and docker compose
This commit is contained in:
parent
d91eca366f
commit
fed058d4c8
3 changed files with 12 additions and 6 deletions
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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"]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue