infra(docker-env2)+infra(docker): init:true + secrets posture parity for env2; regen-proto EXIT trap (arch-review 2026-08-19 P8-2 + P8-3 + P8-4)
This commit is contained in:
@@ -11,6 +11,10 @@ x-secrets-store-env: &secrets-store-env
|
||||
services:
|
||||
central-a:
|
||||
image: scadabridge:latest
|
||||
# An init process (tini) as PID 1, so a crashed dotnet process actually dies
|
||||
# instead of wedging the container at 100% CPU with the restart policy never
|
||||
# firing — mirrors docker/docker-compose.yml's init: true (ScadaBridge#34).
|
||||
init: true
|
||||
# CoordinatedShutdown needs cluster-leave (15s budget) + cluster-exiting +
|
||||
# actor-system-terminate + Serilog flush; the 10s SIGTERM default SIGKILLed
|
||||
# mid-drain, turning every redeploy into the crash path (review 01 [Medium]).
|
||||
@@ -27,6 +31,25 @@ services:
|
||||
# pepper per the "different per environment" guidance; real deployments inject a
|
||||
# true secret out-of-band, never from source control. Both Central nodes share it.
|
||||
ScadaBridge__InboundApi__ApiKeyPepper: "dev-only-insecure-pepper-env2-cluster-0001"
|
||||
# DEV-ONLY local-cluster secrets — NOT real secrets. Relocated out of the mounted
|
||||
# appsettings.Central.json (mirrors docker/docker-compose.yml's G-4 T5 secrets
|
||||
# cleanup) so that app-config file carries no plaintext credentials. Env overrides
|
||||
# layer over JSON BEFORE the ${secret:} pre-host expander runs. The SQL password is
|
||||
# the same value already committed for the sibling scadabridge-mssql container
|
||||
# (infra/docker-compose.yml MSSQL_SA_PASSWORD) and for docker/'s central nodes —
|
||||
# consolidation, not new exposure; env2's Config2/MachineData2 databases live on
|
||||
# that SAME shared mssql container. Real deployments use ${secret:} tokens +
|
||||
# a seeded store.
|
||||
ScadaBridge__Database__ConfigurationDb: "Server=scadabridge-mssql,1433;Database=ScadaBridgeConfig2;User Id=scadabridge_app;Password=ScadaBridge_Dev1#;TrustServerCertificate=true"
|
||||
ScadaBridge__Database__MachineDataDb: "Server=scadabridge-mssql,1433;Database=ScadaBridgeMachineData2;User Id=scadabridge_app;Password=ScadaBridge_Dev1#;TrustServerCertificate=true"
|
||||
# LDAP bind credential for the redundant local GLAuth pair (scadaproj/infra/glauth-redundant,
|
||||
# host.docker.internal:3893/:3894 — see central-node-a/appsettings.Central.json). Same
|
||||
# value docker/'s central nodes use for the SAME local pair; the shared 10.100.0.35
|
||||
# GLAuth's serviceaccount password was rotated (SEC-36) and is no longer valid.
|
||||
ScadaBridge__Security__Ldap__ServiceAccountPassword: "serviceaccount123"
|
||||
# DEV-ONLY local-cluster secret — NOT a real secret. Distinct from docker/'s JWT key
|
||||
# so sessions cannot cross environments (see docker-env2/README.md).
|
||||
ScadaBridge__Security__JwtSigningKey: "scadabridge-env2-dev-jwt-signing-key-must-be-at-least-32-characters-long"
|
||||
# DEV-ONLY gRPC control-plane preshared key for site-x — NOT a real secret.
|
||||
# Must match ScadaBridge:Communication:GrpcPsk in site-x-node-*/appsettings.Site.json.
|
||||
# Production seeds SB-GRPC-PSK-<siteId> into the secret store instead.
|
||||
@@ -47,6 +70,7 @@ services:
|
||||
|
||||
central-b:
|
||||
image: scadabridge:latest
|
||||
init: true # PID-1 crash wedge, ScadaBridge#34 — see central-a
|
||||
# CoordinatedShutdown needs cluster-leave (15s budget) + cluster-exiting +
|
||||
# actor-system-terminate + Serilog flush; the 10s SIGTERM default SIGKILLed
|
||||
# mid-drain, turning every redeploy into the crash path (review 01 [Medium]).
|
||||
@@ -63,6 +87,25 @@ services:
|
||||
# pepper per the "different per environment" guidance; real deployments inject a
|
||||
# true secret out-of-band, never from source control. Both Central nodes share it.
|
||||
ScadaBridge__InboundApi__ApiKeyPepper: "dev-only-insecure-pepper-env2-cluster-0001"
|
||||
# DEV-ONLY local-cluster secrets — NOT real secrets. Relocated out of the mounted
|
||||
# appsettings.Central.json (mirrors docker/docker-compose.yml's G-4 T5 secrets
|
||||
# cleanup) so that app-config file carries no plaintext credentials. Env overrides
|
||||
# layer over JSON BEFORE the ${secret:} pre-host expander runs. The SQL password is
|
||||
# the same value already committed for the sibling scadabridge-mssql container
|
||||
# (infra/docker-compose.yml MSSQL_SA_PASSWORD) and for docker/'s central nodes —
|
||||
# consolidation, not new exposure; env2's Config2/MachineData2 databases live on
|
||||
# that SAME shared mssql container. Real deployments use ${secret:} tokens +
|
||||
# a seeded store.
|
||||
ScadaBridge__Database__ConfigurationDb: "Server=scadabridge-mssql,1433;Database=ScadaBridgeConfig2;User Id=scadabridge_app;Password=ScadaBridge_Dev1#;TrustServerCertificate=true"
|
||||
ScadaBridge__Database__MachineDataDb: "Server=scadabridge-mssql,1433;Database=ScadaBridgeMachineData2;User Id=scadabridge_app;Password=ScadaBridge_Dev1#;TrustServerCertificate=true"
|
||||
# LDAP bind credential for the redundant local GLAuth pair (scadaproj/infra/glauth-redundant,
|
||||
# host.docker.internal:3893/:3894 — see central-node-b/appsettings.Central.json). Same
|
||||
# value docker/'s central nodes use for the SAME local pair; the shared 10.100.0.35
|
||||
# GLAuth's serviceaccount password was rotated (SEC-36) and is no longer valid.
|
||||
ScadaBridge__Security__Ldap__ServiceAccountPassword: "serviceaccount123"
|
||||
# DEV-ONLY local-cluster secret — NOT a real secret. Distinct from docker/'s JWT key
|
||||
# so sessions cannot cross environments (see docker-env2/README.md).
|
||||
ScadaBridge__Security__JwtSigningKey: "scadabridge-env2-dev-jwt-signing-key-must-be-at-least-32-characters-long"
|
||||
# DEV-ONLY gRPC control-plane preshared key for site-x — NOT a real secret.
|
||||
# Must match ScadaBridge:Communication:GrpcPsk in site-x-node-*/appsettings.Site.json.
|
||||
# Production seeds SB-GRPC-PSK-<siteId> into the secret store instead.
|
||||
@@ -83,6 +126,7 @@ services:
|
||||
|
||||
site-x-a:
|
||||
image: scadabridge:latest
|
||||
init: true # PID-1 crash wedge, ScadaBridge#34 — see central-a
|
||||
# CoordinatedShutdown needs cluster-leave (15s budget) + cluster-exiting +
|
||||
# actor-system-terminate + Serilog flush; the 10s SIGTERM default SIGKILLed
|
||||
# mid-drain, turning every redeploy into the crash path (review 01 [Medium]).
|
||||
@@ -111,6 +155,7 @@ services:
|
||||
|
||||
site-x-b:
|
||||
image: scadabridge:latest
|
||||
init: true # PID-1 crash wedge, ScadaBridge#34 — see central-a
|
||||
# CoordinatedShutdown needs cluster-leave (15s budget) + cluster-exiting +
|
||||
# actor-system-terminate + Serilog flush; the 10s SIGTERM default SIGKILLed
|
||||
# mid-drain, turning every redeploy into the crash path (review 01 [Medium]).
|
||||
|
||||
Reference in New Issue
Block a user