diff --git a/.gitignore b/.gitignore index 17934f4..c7a4d03 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,9 @@ build/ .env meshcore.conf +# Docker local overrides +docker-compose.override.yml + # Data directories (keep structure, ignore content) data/snapshots/companion/**/*.json data/snapshots/repeater/**/*.json diff --git a/CLAUDE.md b/CLAUDE.md index b05b712..5fdc7bd 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -205,22 +205,27 @@ The project provides Docker containerization for easy deployment. Two containers |------|---------| | `Dockerfile` | Multi-stage build: Python + Ofelia scheduler | | `docker-compose.yml` | Production deployment using published ghcr.io image | -| `docker-compose.development.yml` | Development override for local builds | +| `docker-compose.dev.yml` | Development override for local builds | +| `docker-compose.override.yml` | Local overrides (gitignored) | | `docker/ofelia.ini` | Scheduler configuration (cron jobs) | | `docker/nginx.conf` | nginx configuration for static site serving | | `.dockerignore` | Files excluded from Docker build context | -### docker-compose.yml vs docker-compose.development.yml +### Docker Compose Files **Production** (`docker-compose.yml`): - Uses published image from `ghcr.io/jorijn/meshcore-stats` - Image version managed by release-please via `x-release-please-version` placeholder - Suitable for end users -**Development** (`docker-compose.development.yml`): +**Development** (`docker-compose.dev.yml`): - Override file that builds locally instead of pulling from registry - Mounts `src/` and `scripts/` for live code changes -- Usage: `docker compose -f docker-compose.yml -f docker-compose.development.yml up --build` +- Usage: `docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build` + +**Local overrides** (`docker-compose.override.yml`): +- Gitignored file for local customizations (e.g., device paths, env_file) +- Automatically merged when running `docker compose up` ### Ofelia Scheduler diff --git a/README.md b/README.md index 092552c..810098b 100644 --- a/README.md +++ b/README.md @@ -171,13 +171,18 @@ See `meshcore.conf.example` for all available options. #### Serial Device Access -The container needs access to your USB serial device. Update `docker-compose.yml` if your device path differs: +The container needs access to your USB serial device. To customize the device path without modifying the tracked `docker-compose.yml`, create a `docker-compose.override.yml` file (gitignored): ```yaml -devices: - - /dev/ttyACM0:/dev/ttyACM0:rwm # Adjust path as needed +# docker-compose.override.yml - Local overrides (not tracked in git) +services: + meshcore-stats: + devices: + - /dev/ttyACM0:/dev/ttyACM0:rw # Your device path ``` +This file is automatically merged with `docker-compose.yml` when running `docker compose up`. + On the host, ensure the device is accessible: ```bash @@ -191,7 +196,7 @@ sudo usermod -a -G dialout $USER For local development with live code changes: ```bash -docker compose -f docker-compose.yml -f docker-compose.development.yml up --build +docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build ``` This mounts `src/` and `scripts/` into the container, so changes take effect immediately without rebuilding. diff --git a/docker-compose.development.yml b/docker-compose.dev.yml similarity index 100% rename from docker-compose.development.yml rename to docker-compose.dev.yml