Release images
Pin the app image that matches the release notes.
After CI validates a version-changing main commit, release automation builds one canonical image and verifies the same digest through public GHCR, Docker Hub, and optional Quay references before deploying it to Fly. For stable self-hosting, pin a version tag such as ghcr.io/taimoorq/logister:v3.5 or docker.io/taimoorq/logister:v3.5 and review the matching changelog entry before upgrading.
Process model
The Docker shape mirrors the Rails app architecture.
| Container | Responsibility |
|---|---|
| Web | Runs the Rails UI, auth, project management, dashboards, and ingest endpoints. |
| Worker | Runs Sidekiq for email delivery, project notifications, digests, async ingestion, optional ClickHouse writes, and archive/prune tasks. |
| PostgreSQL | Stores accounts, projects, API keys, events, grouped errors, notification preferences, and sharing. |
| Redis | Backs Sidekiq, caching, and rate-friendly dashboard behavior. |
| S3-compatible storage | Optional Active Storage target for compressed telemetry archives. |
| ClickHouse | Optional analytics store for higher-volume event and span exploration. |
Self-hosting choices
Use managed data stores or a single-host stack.
Teams can run only the Logister web and worker containers while using managed PostgreSQL, Redis, and SMTP, or they can use a Compose-style single-host stack for the full footprint. The same environment reference applies in both cases.
- Keep secrets in the deploy platform or host secret store, not in the repository.
- Run database migrations in a release phase or explicit one-off task.
- Keep at least one worker process running so email, digests, and async ingestion continue.
Fit check
Docker gives a repeatable app image, not a complete managed service.
The image packages the Rails app and worker code. Your deployment still owns PostgreSQL durability, Redis availability, secret storage, SMTP delivery, HTTPS, backups, and upgrades. Use managed services around the image when your team does not want to operate every dependency on one host.
Verify
Confirm the image, process model, and first event before expanding.
- Pull the pinned image tag from GHCR or Docker Hub and record the matching changelog version.
- Run the web process, worker process, PostgreSQL, Redis, and SMTP configuration in the target environment.
- Apply migrations before sending traffic to the web container.
- Check the health endpoint and create one project from the UI.
- Send one test event and confirm it appears in the project inbox while the worker remains healthy.
Next steps