mirror of
https://github.com/Kpa-clawbot/meshcore-analyzer.git
synced 2026-04-04 17:22:38 +00:00
## Summary - add `DISABLE_MOSQUITTO` support in container startup by switching supervisord config when disabled - add a no-mosquitto supervisord config (`docker/supervisord-go-no-mosquitto.conf`) - fix Compose port mapping regression so host ports map to fixed internal listener ports (`80`, `443`, `1883`) - add compose variants without MQTT port publishing (`docker-compose.no-mosquitto.yml`, `docker-compose.staging.no-mosquitto.yml`) - update `manage.sh` setup flow to ask `Use built-in MQTT broker? [Y/n]`, skip MQTT port prompt when disabled, persist `DISABLE_MOSQUITTO`, and use no-mosquitto compose files when starting/stopping/restarting - align `.env.example` staging keys with compose (`STAGING_GO_HTTP_PORT`, `STAGING_GO_MQTT_PORT`) - fix staging Caddyfile generation to use `STAGING_GO_HTTP_PORT` - fix `.env.example` staging default comments to match actual values (82/1885) ## Validation performed - ✅ `bash -n manage.sh` passes. - ✅ With `DISABLE_MOSQUITTO=true`, no-mosquitto compose overrides are selected, Mosquitto is not started, and MQTT port is not published. - ✅ With `DISABLE_MOSQUITTO=false`, standard compose files are used, Mosquitto starts, and MQTT port mapping is present. - ℹ️ Runtime Docker validation requires a running Docker host. Fixes #267 --------- Co-authored-by: Kpa-clawbot <259247574+Kpa-clawbot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
39 lines
1.2 KiB
YAML
39 lines
1.2 KiB
YAML
# All container config lives here. manage.sh is just a wrapper around docker compose.
|
|
# Override defaults via .env or environment variables.
|
|
# CRITICAL: All data mounts use bind mounts (~/path), NOT named volumes.
|
|
# This ensures the DB and theme are visible on the host filesystem for backup.
|
|
|
|
services:
|
|
prod:
|
|
build:
|
|
context: .
|
|
args:
|
|
APP_VERSION: ${APP_VERSION:-unknown}
|
|
GIT_COMMIT: ${GIT_COMMIT:-unknown}
|
|
BUILD_TIME: ${BUILD_TIME:-unknown}
|
|
image: corescope:latest
|
|
container_name: corescope-prod
|
|
restart: unless-stopped
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
ports:
|
|
- "${PROD_HTTP_PORT:-80}:80"
|
|
- "${PROD_HTTPS_PORT:-443}:443"
|
|
- "${PROD_MQTT_PORT:-1883}:1883"
|
|
volumes:
|
|
- ./caddy-config/Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- ${PROD_DATA_DIR:-~/meshcore-data}:/app/data
|
|
- caddy-data:/data/caddy
|
|
environment:
|
|
- NODE_ENV=production
|
|
- DISABLE_MOSQUITTO=${DISABLE_MOSQUITTO:-false}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-qO-", "http://localhost:3000/api/stats"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
volumes:
|
|
# Named volumes for Caddy TLS certificates (not user data — managed by Caddy internally)
|
|
caddy-data:
|