Běží lusky mají některé proměnné prostředí definované uvnitř, například:
/ # printenv
REACT_APP_ENV_VARIABLE=Variable from Kube!
REDIS_SERVICE_PORT=6379
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.38.0.1:443
REDIS_PORT=tcp://10.38.61.225:6379
REDIS_PORT_6379_TCP_ADDR=10.38.61.225
HOSTNAME=playground-pod
PLAYGROUND_SERVICE_SERVICE_HOST=10.38.0.53
REDIS_PORT_6379_TCP=tcp://10.38.61.225:6379
PLAYGROUND_SERVICE_SERVICE_PORT=80
PLAYGROUND_SERVICE_PORT=tcp://10.38.0.53:80
PLAYGROUND_SERVICE_PORT_80_TCP_ADDR=10.38.0.53
KUBERNETES_PORT_443_TCP_PROTO=tcp
PLAYGROUND_SERVICE_PORT_80_TCP_PORT=80
PLAYGROUND_SERVICE_PORT_80_TCP_PROTO=tcp
REACT_APP_ENV_VARIABLE_TWO=192.168.1.12
PLAYGROUND_SERVICE_PORT_80_TCP=tcp://10.38.0.53:80
Jak mám nakonfigurovat Reagovat aplikace, jako je tento:
function App() {
return (
<div className="App">
<header className="App-header">
<p>
<code>ENV. VARIABLE: </code> {x.REACT_APP_ENV_VARIABLE}
</p>
</header>
</div>
);
}
export default App;
číst a aplikovat některé z proměnných přítomný v lusku?
Hlavní důvod, proč chci vědět, je dynamické aktualizace např. backend nebo Redis Url - se může změnit, když aplikace není restartován, přesunuta, atd.
Můj první přístup byl pomocí config.json
soubor importován do aplikace, ale takhle nemůžu import dynamické hodnoty generované systémem lusky.
.env
soubor. Oba jsou povolené vpackage.json
. Tak, jeden dostane přepsán při budování docker image (a to se zobrazí jehoDockerfile
hodnota v reakci aplikace), mezitím ten druhý není změněná a počáteční hodnota se nakonec zobrazí v aplikace Reagovat. Zkoušel jsem nastavení proměnných pomocíenv
aConfigMap
- žádný z nich pracoval. A samozřejmě, že obě proměnné jsou viditelné, kdyžprintenv
uvnitř běží pod volána.