feat: glitchtip docker stack + local dev integration

WS-7 PR-1 — bring up self-hosted GlitchTip alongside the existing
dev stack. One compose file is portable to the production monitoring
host (RFC-WS-7 §3.1).

- docker-compose.glitchtip.yml: web/worker/postgres/redis pinned, web
  bound to 127.0.0.1:8200, internal network for postgres + valkey.
- docker/glitchtip/.env.example: documented dev defaults + production
  checklist; .env itself ignored.
- Makefile: services / services-stop merge both compose files; new
  services-glitchtip-status tail target.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-06 08:12:31 +02:00
parent 25888a232b
commit fc5a2a9156
4 changed files with 170 additions and 8 deletions

View File

@@ -1,4 +1,4 @@
.PHONY: help services services-stop api app docs migrate fresh db-shell test test-db-create schema-dump
.PHONY: help services services-stop services-glitchtip-status api app docs migrate fresh db-shell test test-db-create schema-dump
# Colors
GREEN := \033[0;32m
@@ -6,6 +6,10 @@ YELLOW := \033[0;33m
CYAN := \033[0;36m
NC := \033[0m
# Compose files merged for local dev. Both files share one project so
# Mailpit (bm_mailpit) is reachable from the GlitchTip containers.
COMPOSE_FILES := -f docker-compose.yml -f docker-compose.glitchtip.yml
help:
@echo ""
@echo "$(GREEN)╔══════════════════════════════════════════════════════════════╗$(NC)"
@@ -13,8 +17,9 @@ help:
@echo "$(GREEN)╚══════════════════════════════════════════════════════════════╝$(NC)"
@echo ""
@echo " $(YELLOW)Services (Docker):$(NC)"
@echo " make services Start MySQL, Redis, Mailpit"
@echo " make services-stop Stop all Docker services"
@echo " make services Start MySQL, Redis, Mailpit, GlitchTip"
@echo " make services-stop Stop all Docker services"
@echo " make services-glitchtip-status Tail GlitchTip web container logs"
@echo ""
@echo " $(YELLOW)Development Servers:$(NC)"
@echo " make api Laravel API → http://localhost:8000"
@@ -34,21 +39,27 @@ help:
services:
@echo "$(GREEN)Starting Docker services...$(NC)"
@docker compose up -d
@docker compose $(COMPOSE_FILES) up -d
@echo ""
@echo "$(GREEN)Services:$(NC)"
@echo " $(CYAN)MySQL:$(NC) localhost:3306 (crewli / secret)"
@echo " $(CYAN)Redis:$(NC) localhost:6379"
@echo " $(CYAN)Mailpit:$(NC) http://localhost:8025"
@echo " $(CYAN)MySQL:$(NC) localhost:3306 (crewli / secret)"
@echo " $(CYAN)Redis:$(NC) localhost:6379"
@echo " $(CYAN)Mailpit:$(NC) http://localhost:8025"
@echo " $(CYAN)GlitchTip:$(NC) http://localhost:8200"
@echo ""
@echo "$(YELLOW)Waiting for MySQL...$(NC)"
@until docker exec bm_mysql mysqladmin ping -h localhost -u root -proot --silent 2>/dev/null; do sleep 1; done
@echo "$(GREEN)✓ Ready!$(NC)"
@echo "$(YELLOW)Note:$(NC) GlitchTip web takes ~60s on first boot (migrations)."
@echo " Tail logs with: $(CYAN)make services-glitchtip-status$(NC)"
services-stop:
@docker compose down
@docker compose $(COMPOSE_FILES) down
@echo "$(GREEN)✓ Services stopped$(NC)"
services-glitchtip-status:
@docker compose $(COMPOSE_FILES) logs -f glitchtip-web
api:
@echo "$(GREEN)Starting Laravel API → http://localhost:8000$(NC)"
@cd api && php artisan serve