Kaynağa Gözat

fix restart

tuanchris 2 ay önce
ebeveyn
işleme
72689151d7
3 değiştirilmiş dosya ile 10 ekleme ve 29 silme
  1. 0 3
      docker-compose.yml
  2. 5 13
      main.py
  3. 5 13
      modules/update/update_manager.py

+ 0 - 3
docker-compose.yml

@@ -6,9 +6,6 @@ services:
     # ports:
     #   - "8080:8080" # Map port 8080 of the container to 8080 of the host (access via http://localhost:8080)
     network_mode: "host" # Use host network for device access
-    environment:
-      # Pass host project directory for Docker commands from inside container
-      - HOST_PROJECT_DIR=${PWD}
     volumes:
       - .:/app
       # Mount Docker socket to allow container to restart itself

+ 5 - 13
main.py

@@ -2757,22 +2757,14 @@ async def restart_system():
         def delayed_restart():
             time.sleep(2)  # Give time for response to be sent
             try:
-                # Get host project directory for docker compose commands
-                # When running inside a container, we need to use the host path
-                host_project_dir = os.environ.get("HOST_PROJECT_DIR")
-                if host_project_dir:
-                    compose_cmd = ["docker", "compose", "-f", f"{host_project_dir}/docker-compose.yml", "restart"]
-                    logger.info(f"Using host project directory: {host_project_dir}")
-                else:
-                    compose_cmd = ["docker", "compose", "restart"]
-                    logger.warning("HOST_PROJECT_DIR not set, using default docker compose")
-
-                subprocess.run(compose_cmd, check=True)
-                logger.info("Docker compose restart command executed successfully")
+                # Use docker restart directly with container name
+                # This is simpler and doesn't require the compose file path
+                subprocess.run(["docker", "restart", "dune-weaver"], check=True)
+                logger.info("Docker restart command executed successfully")
             except FileNotFoundError:
                 logger.error("docker command not found")
             except Exception as e:
-                logger.error(f"Error executing docker compose restart: {e}")
+                logger.error(f"Error executing docker restart: {e}")
 
         import threading
         restart_thread = threading.Thread(target=delayed_restart)

+ 5 - 13
modules/update/update_manager.py

@@ -1,4 +1,3 @@
-import os
 import subprocess
 import logging
 
@@ -77,18 +76,11 @@ def update_software():
 
     run_command(["git", "checkout", latest_remote_tag, '--force'], f"Failed to checkout version {latest_remote_tag}")
 
-    # Get host project directory for docker compose commands
-    # When running inside a container, we need to use the host path for docker compose
-    host_project_dir = os.environ.get("HOST_PROJECT_DIR")
-    if host_project_dir:
-        compose_cmd = ["docker", "compose", "-f", f"{host_project_dir}/docker-compose.yml"]
-        logger.info(f"Using host project directory: {host_project_dir}")
-    else:
-        compose_cmd = ["docker", "compose"]
-        logger.warning("HOST_PROJECT_DIR not set, using default docker compose")
-
-    run_command(compose_cmd + ["pull"], "Failed to fetch Docker containers")
-    run_command(compose_cmd + ["up", "-d"], "Failed to restart Docker containers")
+    # Pull new image and restart container using direct docker commands
+    # Note: docker restart reuses the existing container, so code changes (via volume mount)
+    # are picked up immediately. For image changes (new dependencies), manual recreation is needed.
+    run_command(["docker", "pull", "ghcr.io/tuanchris/dune-weaver:main"], "Failed to pull Docker image")
+    run_command(["docker", "restart", "dune-weaver"], "Failed to restart Docker container")
 
     update_status = check_git_updates()