mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-10-30 00:27:11 +09:00
A variable can now land on one compose service instead of all of them. Both EnvironmentVariable and SharedVariable gain an optional target_service (NULL = all services), threaded through the shared resolver as an inclusion filter (a var applies to a service when it targets all OR that service). EnvService.get_effective_env_for_services(app, services) computes each service's merged env (all-services vars + that-service vars, local overriding shared), and ComposeEnvService builds the override's per-service environment from it — so a var targeted at "db" only appears under the db service, untargeted vars appear everywhere. The single-container docker-run path is unchanged (one container gets the full effective env regardless of target). API: env-var create/update and shared-variable create/update accept target_service; GET /apps/<id>/compose-services lists a compose app's services. UI: the Environment tab shows an "Applies to" selector (gated to compose apps via the service list) with a per-row target chip; the shared variable editor gains a target-service field. Migration 036 adds the two columns; single Alembic head; chain applies from empty. Proving tests cover per-service distribution + the resolver helper. Full backend suite: 949 passed, 14 skipped; frontend builds clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>