From e13e0fa26194bf28a97bbe9e6a3415536d4d893b Mon Sep 17 00:00:00 2001 From: David Blanc Brioir Date: Mon, 15 Dec 2025 13:55:57 +0100 Subject: [PATCH] Dockerize my_project (ports 4300/4301) and update API base URL --- dockerize_my_project.py | 93 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 dockerize_my_project.py diff --git a/dockerize_my_project.py b/dockerize_my_project.py new file mode 100644 index 0000000..4ff9977 --- /dev/null +++ b/dockerize_my_project.py @@ -0,0 +1,93 @@ +""" +Dockerization helper for my_project +=================================== + +Ce script crée les fichiers Docker nécessaires pour exécuter l'application +`generations/my_project` (frontend + serveur + base SQLite) dans Docker, +SANS modifier aucun fichier existant. + +Il génère un fichier de composition : + - docker-compose.my_project.yml (à la racine du repo) + +Ce fichier utilise l'image officielle Node et monte le code existant +ainsi que la base SQLite dans les conteneurs (mode développement). + +Utilisation : + 1) Depuis la racine du repo : + python dockerize_my_project.py + 2) Puis pour lancer l'appli dans Docker : + docker compose -f docker-compose.my_project.yml up + ou, selon votre installation : + docker-compose -f docker-compose.my_project.yml up + + - Frontend accessible sur: http://localhost:3000 + - API backend (server) sur : http://localhost:3001 +""" + +from pathlib import Path + + +def generate_docker_compose(root: Path) -> None: + """Génère le fichier docker-compose.my_project.yml sans toucher au code existant.""" + project_dir = root / "generations" / "my_project" + + if not project_dir.exists(): + raise SystemExit(f"Project directory not found: {project_dir}") + + compose_path = root / "docker-compose.my_project.yml" + + # On utilise les scripts npm déjà définis : + # - frontend: npm run dev (Vite) en écoutant sur 0.0.0.0:3000 (dans le conteneur) + # - server: npm start dans ./server sur 3001 (dans le conteneur) + # + # Pour éviter les conflits de ports courants (3000/3001) sur la machine hôte, + # on mappe vers des ports plus élevés côté host : + # - frontend : host 4300 -> container 3000 + # - backend : host 4301 -> container 3001 + # + # Le volume ./generations/my_project est monté dans /app, + # ce qui inclut aussi la base SQLite dans server/data/claude-clone.db. + compose_content = f"""services: + my_project_frontend: + image: node:20 + working_dir: /app + volumes: + - ./generations/my_project:/app + # Eviter de réutiliser les node_modules Windows dans le conteneur Linux + - /app/node_modules + command: ["sh", "-c", "npm install && npm run dev -- --host 0.0.0.0 --port 3000"] + ports: + - "4300:3000" + environment: + - NODE_ENV=development + + my_project_server: + image: node:20 + working_dir: /app/server + volumes: + - ./generations/my_project:/app + # Eviter de réutiliser les node_modules Windows dans le conteneur Linux + - /app/server/node_modules + command: ["sh", "-c", "npm install && npm start"] + ports: + - "4301:3001" + environment: + - NODE_ENV=development + depends_on: + - my_project_frontend + +""" + + compose_path.write_text(compose_content, encoding="utf-8") + print(f"Created {compose_path.relative_to(root)}") + + +def main() -> None: + repo_root = Path(__file__).resolve().parent + generate_docker_compose(repo_root) + + +if __name__ == "__main__": + main() + +