diff --git a/container_manager.py b/container_manager.py index a47c057..2ddc581 100644 --- a/container_manager.py +++ b/container_manager.py @@ -248,17 +248,24 @@ class ContainerManager: for host, config in volumes.items(): print(f"[SPAWNER] {host} -> {config['bind']}") + # Environment-Variablen für Container + env_vars = { + 'USER_ID': str(user_id), + 'USER_SLUG': slug, + 'CONTAINER_TYPE': container_type, + 'JWT_SECRET': Config.SECRET_KEY # Für Token-Validierung im Container + } + + # vcoder braucht BASE_PATH für code-server Subpath-Routing + if container_type == 'vcoder': + env_vars['BASE_PATH'] = f'/{slug_with_suffix}' + container = self._get_client().containers.run( image=image, name=container_name, detach=True, labels=labels, - environment={ - 'USER_ID': str(user_id), - 'USER_SLUG': slug, - 'CONTAINER_TYPE': container_type, - 'JWT_SECRET': Config.SECRET_KEY # Für Token-Validierung im Container - }, + environment=env_vars, restart_policy={'Name': 'unless-stopped'}, mem_limit=Config.DEFAULT_MEMORY_LIMIT, cpu_quota=Config.DEFAULT_CPU_QUOTA, diff --git a/user-template-vcoder/Dockerfile b/user-template-vcoder/Dockerfile index bd9b433..9d99eb2 100644 --- a/user-template-vcoder/Dockerfile +++ b/user-template-vcoder/Dockerfile @@ -61,6 +61,13 @@ RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/* # Entrypoint-Script - startet socat Tunnel + code-server RUN printf '#!/bin/bash\n\ socat TCP-LISTEN:8008,reuseaddr,fork TCP:localhost:9009 &\n\ +# Wenn BASE_PATH nicht gesetzt, nutze "/"\n\ +BASE_PATH="${BASE_PATH:=/}"\n\ +# Ersetze in CMD das --bind-addr mit vollständigen Flags\n\ +if [ "$1" = "code-server" ]; then\n\ + shift\n\ + exec code-server "--bind-addr" "0.0.0.0:8080" "--base-path" "$BASE_PATH" "--auth" "none" "$@"\n\ +fi\n\ exec "$@"\n' > /entrypoint.sh && chmod +x /entrypoint.sh USER coder