# Ignition + Docker Development Framework Reusable scaffold for Ignition SCADA + Docker projects, designed to work with Claude Code as the AI development assistant. ## First Consumer **PLC I/O Testing Platform** — automated PLC I/O validation using JSON-defined test scenarios. ## Stack - Ignition 8.3 (Perspective, WebDev, OPC-UA, Git-native project storage) - Docker Compose on Ubuntu 24 - Rockwell Allen-Bradley ControlLogix/CompactLogix - PostgreSQL 16 - Traefik v3 (optional reverse proxy) - Gitea for source control ## First-Time Setup ### Prerequisites - Docker + Docker Compose installed on the host (Ubuntu 24 recommended) - Git repo cloned to the host machine ### 1. Create the secrets file ```bash cp docker/gw-secret/GATEWAY_ADMIN_PASSWORD.example docker/gw-secret/GATEWAY_ADMIN_PASSWORD # Edit the file and set a real password — this file is gitignored nano docker/gw-secret/GATEWAY_ADMIN_PASSWORD ``` ### 2. Create the environment file ```bash cp docker/.env.example docker/.env # Edit values as needed (Ignition version, memory, hostname, Postgres password) nano docker/.env ``` Key variables in `.env`: | Variable | Default | Description | |---|---|---| | `IGNITION_VERSION` | `8.3.3` | Ignition image version | | `GATEWAY_MAX_MEMORY` | `8192` | Gateway JVM heap in MB | | `GATEWAY_NAME` | `framework` | Gateway name shown in designer | | `GATEWAY_HOSTNAME` | `ignition.localhost` | Public hostname (Traefik routing) | | `POSTGRES_PASSWORD` | `changeme` | PostgreSQL password | ### 3. Build and start the stack ```bash cd docker docker compose build # builds the custom Ignition image docker compose up -d # starts all services in background ``` ### 4. Verify services are healthy ```bash docker compose ps # all services should show "healthy" or "running" curl -s http://localhost:8088/StatusPing # should return "RUNNING" ``` ### 5. Open the gateway - Ignition gateway: http://localhost:8088 - Traefik dashboard: http://localhost:8080 - Via hostname (requires local DNS or /etc/hosts): http://ignition.localhost > **Note:** On first boot the gateway skips the setup wizard (`commissioning.json` pre-commissions it). > Log in with username `admin` and the password from `gw-secret/GATEWAY_ADMIN_PASSWORD`. ### 6. Connect Ignition Designer Open Ignition Designer Launcher, add gateway at `http://:8088`, and open the **Framework** project. The project files in `ignition/project/` are live-mounted — changes saved in Designer write directly to Git-tracked files. --- ## Development See [CLAUDE.md](CLAUDE.md) for project directives, canonical patterns, and directory layout. ## Directory Structure ``` ├── CLAUDE.md ← root directives (Claude Code reads this automatically) ├── docker/ ← Docker Compose stack and configs ├── ignition/ ← Ignition project (mounted into container) ├── testing/ ← test scenarios, runner, results ├── webdev/ ← WebDev API endpoint contracts ├── tools/ ← Python 3.10+ external utilities └── docs/ ← project documentation ``` Each subdirectory contains its own `CLAUDE.md` with domain-specific rules. ## License Internal use only.