wp on webui

This commit is contained in:
2026-02-02 23:37:11 +01:00
parent ce24e0caa0
commit 5e1cb64a81
8 changed files with 278 additions and 99 deletions

View File

@@ -11,15 +11,15 @@ from typing import Dict, Optional, List, Any
from contextlib import asynccontextmanager
import os
from aiodeocker import Docker
from aiodeocker.containers import DockerContainer
from aiodeocker.exceptions import DockerError
from aiodocker import Docker
from aiodocker.containers import DockerContainer
from aiodocker.exceptions import DockerError
logger = logging.getLogger(__name__)
class AsyncDockerClient:
"""Async wrapper for Docker operations using aiodeocker."""
"""Async wrapper for Docker operations using aiodocker."""
def __init__(self):
self._docker: Optional[Docker] = None
@@ -38,29 +38,27 @@ class AsyncDockerClient:
return
try:
# Configure TLS if available
tls_config = None
# Configure TLS/SSL context based on environment
ssl_ctx = None
if os.getenv("DOCKER_TLS_VERIFY") == "1":
from aiodeocker.utils import create_tls_config
tls_config = create_tls_config(
ca_cert=os.getenv("DOCKER_CA_CERT", "/etc/docker/certs/ca.pem"),
client_cert=(
os.getenv(
"DOCKER_CLIENT_CERT", "/etc/docker/certs/client-cert.pem"
),
os.getenv(
"DOCKER_CLIENT_KEY", "/etc/docker/certs/client-key.pem"
),
),
verify=True,
import ssl
ssl_ctx = ssl.create_default_context(
cafile=os.getenv("DOCKER_CA_CERT", "/etc/docker/certs/ca.pem")
)
ssl_ctx.load_cert_chain(
certfile=os.getenv("DOCKER_CLIENT_CERT", "/etc/docker/certs/client-cert.pem"),
keyfile=os.getenv("DOCKER_CLIENT_KEY", "/etc/docker/certs/client-key.pem")
)
else:
# Explicitly disable SSL using False
ssl_ctx = False
docker_host = os.getenv("DOCKER_HOST", "tcp://host.docker.internal:2376")
self._docker = Docker(docker_host, tls=tls_config)
self._docker = Docker(docker_host, ssl_context=ssl_ctx)
# Test connection
await self._docker.ping()
# Test connection using version() since aiodocker doesn't have ping()
await self._docker.version()
self._connected = True
logger.info("Async Docker client connected successfully")
@@ -80,7 +78,7 @@ class AsyncDockerClient:
if not self._docker:
return False
try:
await self._docker.ping()
await self._docker.version()
return True
except Exception:
return False