refactor(proxy): move proxy logic to services.mitmproxy and update Docker service model
Build and Push to Registry / build (push) Successful in 29s

- Rename DockerService to DockerContainer and add folder attribute
- Move proxy-related modules (models, validator) to services.mitmproxy
- Update imports and references to new module locations
- Refactor Docker utilities to use DockerContainer and improve service discovery
- Add manager.py with create_proxy utility stub
- Initialize discovered Docker services at app startup and warn if none found
This commit is contained in:
2026-04-13 00:24:20 +02:00 Unverified
parent 4fa014f465
commit f9e33e2847
12 changed files with 61 additions and 29 deletions
+2 -4
View File
@@ -2,15 +2,13 @@ from integrations.docker.compose import (
find_docker_compose,
get_all_services,
get_services,
get_visible_folders,
)
from integrations.docker.editor import change_port
from integrations.docker.models import DockerService
from integrations.docker.models import DockerContainer
__all__ = [
"DockerService",
"DockerContainer",
"find_docker_compose",
"get_visible_folders",
"get_services",
"get_all_services",
"change_port",
+11 -11
View File
@@ -2,7 +2,7 @@ from pathlib import Path
import yaml
from integrations.docker.models import DockerService
from integrations.docker.models import DockerContainer
from integrations.docker.ports import _get_service_port
COMPOSE_NAMES = (
@@ -13,7 +13,7 @@ COMPOSE_NAMES = (
)
def get_visible_folders(directory: Path) -> list[Path]:
def _get_visible_folders(directory: Path) -> list[Path]:
return [
p for p in Path(directory).iterdir() if p.is_dir() and not p.name.startswith(".")
]
@@ -32,8 +32,8 @@ def find_docker_compose(path: Path) -> tuple[dict, str] | None:
return None
def get_services(folder: Path) -> list[DockerService] | None:
services: list[DockerService] = []
def get_services(folder: Path) -> list[DockerContainer] | None:
services: list[DockerContainer] = []
compose_data = find_docker_compose(folder)
if compose_data is None:
return None
@@ -56,20 +56,20 @@ def get_services(folder: Path) -> list[DockerService] | None:
if not ports:
continue
services.append({"name": service_name, "ports": ports})
services.append({"name": service_name, "ports": ports, "folder": folder})
return services or None
return services
def get_all_services(directory: str | Path) -> list[DockerService] | None:
def get_all_services(directory: str | Path) -> list[DockerContainer]:
path = Path(directory)
if not path.is_dir():
return None
return []
services: list[DockerService] = []
for sub_folder in get_visible_folders(path):
services: list[DockerContainer] = []
for sub_folder in _get_visible_folders(path):
sub_services = get_services(sub_folder)
if sub_services:
services.extend(sub_services)
return services or None
return services
+3 -1
View File
@@ -1,6 +1,8 @@
from pathlib import Path
from typing import TypedDict
class DockerService(TypedDict):
class DockerContainer(TypedDict):
name: str
ports: list[int]
folder: Path