From c5610f11e01c3e0b6eeb6fe87b54b6fc4813c5fd Mon Sep 17 00:00:00 2001 From: jokob-sk Date: Sun, 21 Sep 2025 10:38:24 +1000 Subject: [PATCH] devcontainer docs Signed-off-by: jokob-sk --- .coverage | Bin .devcontainer/README.md | 0 .devcontainer/resources/99-xdebug.ini | 0 .../resources/devcontainer-Dockerfile | 0 .../resources/netalertx-devcontainer.conf | 0 .devcontainer/xdebug-trigger.ini | 0 .github/copilot-instructions.md | 0 .vscode/launch.json | 0 .vscode/settings.json | 0 .vscode/tasks.json | 0 docs/DEV_DEVCONTAINER.md | 59 ++++++++++++++++++ docs/DEV_ENV_SETUP.md | 5 +- .../Maintenance_Logs_Restart_server.png | Bin docs/img/DEV/devcontainer_1.png | Bin 0 -> 11401 bytes docs/img/DEV/devcontainer_2.png | Bin 0 -> 17545 bytes docs/img/DEV/devcontainer_3.png | Bin 0 -> 13944 bytes docs/img/DEV/devcontainer_4.png | Bin 0 -> 46304 bytes front/.gitignore | 0 pyproject.toml | 0 19 files changed, 63 insertions(+), 1 deletion(-) mode change 100644 => 100755 .coverage mode change 100644 => 100755 .devcontainer/README.md mode change 100644 => 100755 .devcontainer/resources/99-xdebug.ini mode change 100644 => 100755 .devcontainer/resources/devcontainer-Dockerfile mode change 100644 => 100755 .devcontainer/resources/netalertx-devcontainer.conf mode change 100644 => 100755 .devcontainer/xdebug-trigger.ini mode change 100644 => 100755 .github/copilot-instructions.md mode change 100644 => 100755 .vscode/launch.json mode change 100644 => 100755 .vscode/settings.json mode change 100644 => 100755 .vscode/tasks.json create mode 100755 docs/DEV_DEVCONTAINER.md rename docs/img/{DEV_ENV_SETUP => DEV}/Maintenance_Logs_Restart_server.png (100%) create mode 100755 docs/img/DEV/devcontainer_1.png create mode 100755 docs/img/DEV/devcontainer_2.png create mode 100755 docs/img/DEV/devcontainer_3.png create mode 100755 docs/img/DEV/devcontainer_4.png mode change 100644 => 100755 front/.gitignore mode change 100644 => 100755 pyproject.toml diff --git a/.coverage b/.coverage old mode 100644 new mode 100755 diff --git a/.devcontainer/README.md b/.devcontainer/README.md old mode 100644 new mode 100755 diff --git a/.devcontainer/resources/99-xdebug.ini b/.devcontainer/resources/99-xdebug.ini old mode 100644 new mode 100755 diff --git a/.devcontainer/resources/devcontainer-Dockerfile b/.devcontainer/resources/devcontainer-Dockerfile old mode 100644 new mode 100755 diff --git a/.devcontainer/resources/netalertx-devcontainer.conf b/.devcontainer/resources/netalertx-devcontainer.conf old mode 100644 new mode 100755 diff --git a/.devcontainer/xdebug-trigger.ini b/.devcontainer/xdebug-trigger.ini old mode 100644 new mode 100755 diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md old mode 100644 new mode 100755 diff --git a/.vscode/launch.json b/.vscode/launch.json old mode 100644 new mode 100755 diff --git a/.vscode/settings.json b/.vscode/settings.json old mode 100644 new mode 100755 diff --git a/.vscode/tasks.json b/.vscode/tasks.json old mode 100644 new mode 100755 diff --git a/docs/DEV_DEVCONTAINER.md b/docs/DEV_DEVCONTAINER.md new file mode 100755 index 000000000..9431ffa3f --- /dev/null +++ b/docs/DEV_DEVCONTAINER.md @@ -0,0 +1,59 @@ +### Devcontainer for NetAlertX Guide + +This devcontainer is designed to mirror the production container environment as closely as possible, while providing a rich set of tools for development. + +#### How to Get Started + +1. **Prerequisites:** + * A working **Docker installation** that can be managed by your user. This can be [Docker Desktop](https://www.docker.com/products/docker-desktop/) or Docker Engine installed via other methods (like the official [get-docker script](https://get.docker.com)). + * [Visual Studio Code](https://code.visualstudio.com/) installed. + * The [VS Code Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) installed. + +2. **Launch the Devcontainer:** + * Clone this repository. + * Open the repository folder in VS Code. + * A notification will pop up in the bottom-right corner asking to **"Reopen in Container"**. Click it. + * VS Code will now build the Docker image and connect your editor to the container. Your terminal, debugger, and all tools will now be running inside this isolated environment. + +#### Key Workflows & Features + +Once you're inside the container, everything is set up for you. + +**1. Services (Frontend & Backend)** +![Services](./img/DEV/devcontainer_1.png) + +The container's startup script (`.devcontainer/scripts/setup.sh`) automatically starts the Nginx/PHP frontend and the Python backend. You can restart them at any time using the built-in tasks. + +**2. Integrated Debugging (Just Press F5!)** +![Debugging](./img/DEV/devcontainer_2.png) + +Debugging for both the Python backend and PHP frontend is pre-configured and ready to go. + +* **Python Backend (debugpy):** The backend automatically starts with a debugger attached on port `5678`. Simply open a Python file (e.g., `server/__main__.py`), set a breakpoint, and press **F5** (or select "Python Backend Debug: Attach") to connect the debugger. +* **PHP Frontend (Xdebug):** Xdebug listens on port `9003`. In VS Code, start listening for Xdebug connections and use a browser extension (like "Xdebug helper") to start a debugging session for the web UI. + +**3. Common Tasks (F1 -> Run Task)** +![Common tasks](./img/DEV/devcontainer_3.png) + +We've created several VS Code Tasks to simplify common operations. Access them by pressing `F1` and typing "Tasks: Run Task". + +* `Generate Dockerfile`: **This is important.** The actual `.devcontainer/Dockerfile` is auto-generated. If you need to change the container environment, edit `.devcontainer/resources/devcontainer-Dockerfile` and then run this task. +* `Re-Run Startup Script`: Manually re-runs the `.devcontainer/scripts/setup.sh` script to re-link files and restart services. +* `Start Backend (Python)` / `Start Frontend (nginx and PHP-FPM)`: Manually restart the services if needed. + +**4. Running Tests** +![Running tests](./img/DEV/devcontainer_4.png) + +The environment includes `pytest`. You can run tests directly from the VS Code Test Explorer UI or by running `pytest -q` in the integrated terminal. The necessary `PYTHONPATH` is already configured so that tests can correctly import the server modules. + +### How to Maintain This Devcontainer + +The setup is designed to be easy to manage. Here are the core principles: + +* **Don't Edit `Dockerfile` Directly:** The main `.devcontainer/Dockerfile` is a combination of the project's root `Dockerfile` and a special dev-only stage. To add new tools or dependencies, **edit `.devcontainer/resources/devcontainer-Dockerfile`** and then run the `Generate Dockerfile` task. +* **Build-Time vs. Run-Time Setup:** + * For changes that can be baked into the image (like installing a new package with `apk add`), add them to the resource Dockerfile. + * For changes that must happen when the container *starts* (like creating symlinks, setting permissions, or starting services), use `.devcontainer/scripts/setup.sh`. +* **Project Conventions:** The `.github/copilot-instructions.md` file is an excellent resource to help AI and humans understand the project's architecture, conventions, and how to use existing helper functions instead of hardcoding values. + +This setup provides a powerful and consistent foundation for all current and future contributors to NetAlertX. \ No newline at end of file diff --git a/docs/DEV_ENV_SETUP.md b/docs/DEV_ENV_SETUP.md index b81b3f6ab..d466e7947 100755 --- a/docs/DEV_ENV_SETUP.md +++ b/docs/DEV_ENV_SETUP.md @@ -32,6 +32,9 @@ Examples: ## Development Environment Set Up +>[!TIP] +> There is also a ready to use [devcontainer](DEV_DEVCONTAINER.md) available. + The following steps will guide you to set up your environment for local development and to run a custom docker build on your system. For most changes the container doesn't need to be rebuild which speeds up the development significantly. >[!NOTE] @@ -94,7 +97,7 @@ Most code changes can be tested without rebuilding the container. When working o 1. You can usually restart the backend via _Maintenance > Logs > Restart_ server -![image](./img/DEV_ENV_SETUP/Maintenance_Logs_Restart_server.png) +![image](./img/DEV/Maintenance_Logs_Restart_server.png) 2. If above doesn't work, SSH into the container and kill & restart the main script loop diff --git a/docs/img/DEV_ENV_SETUP/Maintenance_Logs_Restart_server.png b/docs/img/DEV/Maintenance_Logs_Restart_server.png similarity index 100% rename from docs/img/DEV_ENV_SETUP/Maintenance_Logs_Restart_server.png rename to docs/img/DEV/Maintenance_Logs_Restart_server.png diff --git a/docs/img/DEV/devcontainer_1.png b/docs/img/DEV/devcontainer_1.png new file mode 100755 index 0000000000000000000000000000000000000000..e8d077e427bb27dbc92df524044cbc04b1ac8653 GIT binary patch literal 11401 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 MlNT-fXyE@p08&m4SO5S3 literal 0 HcmV?d00001 diff --git a/docs/img/DEV/devcontainer_3.png b/docs/img/DEV/devcontainer_3.png new file mode 100755 index 0000000000000000000000000000000000000000..4343cc8d89457cc3eaafd50662ae74a878b0f4d2 GIT binary patch literal 13944 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 literal 0 HcmV?d00001 diff --git a/docs/img/DEV/devcontainer_4.png b/docs/img/DEV/devcontainer_4.png new file mode 100755 index 0000000000000000000000000000000000000000..110cc94581d77122a71138d5ab98d8d615ce4b58 GIT binary patch literal 46304 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 r`^kRcyG=hE-*bPC&1z$^j1Kv939lq^vQ@ZD^ literal 0 HcmV?d00001 diff --git a/front/.gitignore b/front/.gitignore old mode 100644 new mode 100755 diff --git a/pyproject.toml b/pyproject.toml old mode 100644 new mode 100755