chore(flags): wire UNLEASH_URL and the SDK cache volume into the stacks
PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 1m3s
PR Checks / Backend Smoke (pull_request) Successful in 10s
PR Checks / Build Backend (no push) (pull_request) Successful in 27s
PR Checks / Build Frontend (no push) (pull_request) Successful in 44s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 10s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 2m59s
PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 1m3s
PR Checks / Backend Smoke (pull_request) Successful in 10s
PR Checks / Build Backend (no push) (pull_request) Successful in 27s
PR Checks / Build Frontend (no push) (pull_request) Successful in 44s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 10s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 2m59s
Both variables default to empty, so an environment without Unleash has every flag off — the correct dark state rather than a boot failure. The cache volume is the mitigation for the one real regression risk in this design: the SDK evaluates everything False until it syncs, so a backend cold-starting with an empty cache while Unleash is unreachable would make a *released* feature disappear. On a named volume the disk cache survives a restart. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015mWQnpye9F299NVRCCSRvj
This commit is contained in:
1 parent
4f01fbdedb
commit
413d86cc3c
3 files changed
+22
No files matched your search
@@ -16,6 +16,8 @@
|
|||||||
# ADMIN_API_KEY — Backend admin API key
|
# ADMIN_API_KEY — Backend admin API key
|
||||||
# TYPESENSE_API_KEY — Typesense admin API key
|
# TYPESENSE_API_KEY — Typesense admin API key
|
||||||
# TYPESENSE_SEARCH_KEY — Typesense search-only key (exposed to frontend)
|
# TYPESENSE_SEARCH_KEY — Typesense search-only key (exposed to frontend)
|
||||||
|
# UNLEASH_URL — http://<unleash-ip>:4242/api (empty = all flags off)
|
||||||
|
# UNLEASH_API_TOKEN — Unleash *client* token, environment: development
|
||||||
# AIRFLOW_ADMIN_USER — Airflow admin username (password auto-generated, see api-server logs)
|
# AIRFLOW_ADMIN_USER — Airflow admin username (password auto-generated, see api-server logs)
|
||||||
# STAGING_DB_IP — macvlan IP for staging Postgres (default 10.0.1.190)
|
# STAGING_DB_IP — macvlan IP for staging Postgres (default 10.0.1.190)
|
||||||
# STAGING_FRONTEND_IP — macvlan IP for staging frontend (default 10.0.1.151)
|
# STAGING_FRONTEND_IP — macvlan IP for staging frontend (default 10.0.1.151)
|
||||||
@@ -55,6 +57,12 @@ services:
|
|||||||
ADMIN_API_KEY: ${ADMIN_API_KEY:-changeme}
|
ADMIN_API_KEY: ${ADMIN_API_KEY:-changeme}
|
||||||
TYPESENSE_URL: http://typesense:8108
|
TYPESENSE_URL: http://typesense:8108
|
||||||
TYPESENSE_API_KEY: ${TYPESENSE_API_KEY:-changeme}
|
TYPESENSE_API_KEY: ${TYPESENSE_API_KEY:-changeme}
|
||||||
|
# Unset means every feature flag is False — the correct dark state for an
|
||||||
|
# environment with no Unleash, not a failure.
|
||||||
|
UNLEASH_URL: ${UNLEASH_URL:-}
|
||||||
|
UNLEASH_API_TOKEN: ${UNLEASH_API_TOKEN:-}
|
||||||
|
volumes:
|
||||||
|
- unleash_cache:/app/.unleash
|
||||||
depends_on:
|
depends_on:
|
||||||
sc_database:
|
sc_database:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -212,3 +220,4 @@ volumes:
|
|||||||
postgres_data:
|
postgres_data:
|
||||||
typesense_data:
|
typesense_data:
|
||||||
airflow_logs:
|
airflow_logs:
|
||||||
|
unleash_cache:
|
||||||
@@ -7,6 +7,8 @@
|
|||||||
# ADMIN_API_KEY — Backend admin API key
|
# ADMIN_API_KEY — Backend admin API key
|
||||||
# TYPESENSE_API_KEY — Typesense admin API key
|
# TYPESENSE_API_KEY — Typesense admin API key
|
||||||
# TYPESENSE_SEARCH_KEY — Typesense search-only key (exposed to frontend)
|
# TYPESENSE_SEARCH_KEY — Typesense search-only key (exposed to frontend)
|
||||||
|
# UNLEASH_URL — http://<unleash-ip>:4242/api (empty = all flags off)
|
||||||
|
# UNLEASH_API_TOKEN — Unleash *client* token, environment: production
|
||||||
# AIRFLOW_ADMIN_USER — Airflow admin username (password auto-generated, see api-server logs)
|
# AIRFLOW_ADMIN_USER — Airflow admin username (password auto-generated, see api-server logs)
|
||||||
|
|
||||||
services:
|
services:
|
||||||
@@ -44,6 +46,12 @@ services:
|
|||||||
ADMIN_API_KEY: ${ADMIN_API_KEY:-changeme}
|
ADMIN_API_KEY: ${ADMIN_API_KEY:-changeme}
|
||||||
TYPESENSE_URL: http://typesense:8108
|
TYPESENSE_URL: http://typesense:8108
|
||||||
TYPESENSE_API_KEY: ${TYPESENSE_API_KEY:-changeme}
|
TYPESENSE_API_KEY: ${TYPESENSE_API_KEY:-changeme}
|
||||||
|
# Unset means every feature flag is False — the correct dark state for an
|
||||||
|
# environment with no Unleash, not a failure.
|
||||||
|
UNLEASH_URL: ${UNLEASH_URL:-}
|
||||||
|
UNLEASH_API_TOKEN: ${UNLEASH_API_TOKEN:-}
|
||||||
|
volumes:
|
||||||
|
- unleash_cache:/app/.unleash
|
||||||
depends_on:
|
depends_on:
|
||||||
sc_database:
|
sc_database:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -201,3 +209,4 @@ volumes:
|
|||||||
postgres_data:
|
postgres_data:
|
||||||
typesense_data:
|
typesense_data:
|
||||||
airflow_logs:
|
airflow_logs:
|
||||||
|
unleash_cache:
|
||||||
@@ -36,6 +36,10 @@ services:
|
|||||||
ADMIN_API_KEY: ${ADMIN_API_KEY:-changeme}
|
ADMIN_API_KEY: ${ADMIN_API_KEY:-changeme}
|
||||||
TYPESENSE_URL: http://typesense:8108
|
TYPESENSE_URL: http://typesense:8108
|
||||||
TYPESENSE_API_KEY: ${TYPESENSE_API_KEY:-changeme}
|
TYPESENSE_API_KEY: ${TYPESENSE_API_KEY:-changeme}
|
||||||
|
# Unset means every feature flag is False — the correct dark state for an
|
||||||
|
# environment with no Unleash, not a failure.
|
||||||
|
UNLEASH_URL: ${UNLEASH_URL:-}
|
||||||
|
UNLEASH_API_TOKEN: ${UNLEASH_API_TOKEN:-}
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/app/data:ro
|
- ./data:/app/data:ro
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
Reference in new issue
Block a user