Commit Graph

9 Commits (4be0ea7baea3843902c5a7fe99b41c5dd5113099)

Author SHA1 Message Date
Boban Blaskovic b605e0cd4f Move dev bind-mounts to docker-compose.override.yml (keep Portainer stack clean)
docker-compose.yml no longer contains ./app:/var/www/html bind-mounts.
Local dev bind-mounts live in docker-compose.override.yml which docker
compose CLI auto-merges but Portainer does not read (Portainer uses
either docker-compose.yml or docker-compose.portainer.yml).

This prevents future Portainer 'Limited' state caused by CLI deploys
overwriting Portainer-managed containers.
2026-05-31 23:37:04 +02:00
Boban Blaskovic 9ea55e33bd Dev: bind-mount ./app + vite dev mode + drop asset preload tags
- docker-compose.yml: bind-mount ./app:/var/www/html on nginx + all PHP
  services. CLI dev workflow now uses host code directly (no rebuild
  needed for code or CSS changes). Portainer-stack untouched (uses
  docker-compose.portainer.yml without bind-mounts).
- AppServiceProvider: Vite::usePreloadTagAttributes(false) drops the
  <link rel=preload> tags that triggered 'preloaded but not used within
  a few seconds' warnings under wire:navigate.
- vendor/ + composer.lock synced from container to host so bind-mount
  exposes a complete tree.
2026-05-31 22:58:45 +02:00
Boban Blaskovic 1cf91e2f32 nginx healthcheck: 127.0.0.1 instead of localhost (only IPv4 listener) 2026-05-31 21:18:06 +02:00
Boban Blaskovic 1c8bab0f04 nginx: extra_hosts host-gateway for vite HMR upstream; gitignore root .env
nginx config has static upstream pointing at host.docker.internal:5173 for
Vite dev server. Without extra_hosts the DNS lookup fails at nginx startup
and crashes the container. Added back, harmless in prod (upstream just unused).
2026-05-31 21:01:28 +02:00
Boban Blaskovic fb0fc26a21 Version-pin images: APP_VERSION for own builds, MARIADB/REDIS for services
No more :latest. Per-stack env vars set the version; prod uses Git tags,
dev uses 'dev' (rebuilt each push).
2026-05-31 18:17:09 +02:00
Boban Blaskovic 87f41387ce Bake app into multi-stage image; drop bind mounts for Portainer remote endpoint
- New root Dockerfile: composer-deps + node-build + assembled code stages,
  final PHP-FPM and nginx targets both built from same context.
- docker-compose.yml: all services build/use baked images. No ./app or
  config bind mounts (broke with Portainer on VM-A + Docker daemon on VM-B).
- app-storage named volume preserves Laravel storage across redeploys.
- Laravel env passed via x-php-env anchor from stack env vars.
- Removed per-service docker/php/Dockerfile and docker/nginx/Dockerfile.
- entrypoint.sh: touch .env, ensure storage dirs, idempotent storage:link.
2026-05-31 17:44:35 +02:00
Boban Blaskovic 6681df5a10 nginx: bake config into custom image (no single-file bind mount) 2026-05-31 17:28:17 +02:00
Boban Blaskovic 67598ab649 Portainer-ready compose stack + app changes 2026-05-31 17:04:03 +02:00
Boban Blaskovic 624b21fcb9 Initial CluPilot stack setup
Laravel 12 + Livewire v3 + Tailwind v4 + Reverb WebSocket
behind Nginx Proxy Manager (external SSL termination, HTTP-only internal).
MariaDB 11, Redis 7, Mailpit. Dark auth views.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 23:00:14 +02:00