Omgevingsvariabelen
Omgevingsvariabelen zijn nuttig om je applicatie informatie te geven van buiten de applicatie. Ze worden typisch gebruikt om dingen in te stellen als gegevens over de verbinding met de database en API sleutels.
Speciale tekens in omgevingsvariabelen
In de toetsen van omgevingsvariabelen kun je alleen a-z, 0-9 of underscore (_
) gebruiken. Waarden van omgevingsvariabelen worden letterlijk toegepast, met uitzondering van haakjes, komma’s en dubbele aanhalingstekens.
Haakjes
Haakjes kunnen ervoor zorgen dat het build- of rolloutproces mislukt, afhankelijk van wanneer ze beschikbaar zijn tijdens het deployen. Ze kunnen niet worden gebruikt in omgevingsvariabelen.
Komma’s
Unescaped komma’s worden geïnterpreteerd als scheidingstekens en kunnen niet worden gebruikt in omgevingsvariabelen.
- Bijvoorbeeld:
write_stock,read_orders
zorgt ervoor dat het rolloutproces mislukt. - Om een komma binnen een string te houden, escape je hem met een backslash (
\
) zoals dit:write_stock,read_orders
– wat zal worden toegepast alswrite_stock,read_orders
.
Dubbele aanhalingstekens
Unescaped double quotes worden genegeerd of zorgen ervoor dat het rolloutproces mislukt.
- Bijvoorbeeld,
"my_example_variable"
zal worden toegepast als:my_example_variable
. - Om dubbele aanhalingstekens rond een variabele te behouden, escape je ze met een backslash (
\
) zoals dit:\"my_example_var\"
– wat zal worden toegepast als"my_example_var"
. - Als er dubbele aanhalingstekens in een tekenreeks staan (bijvoorbeeld
my_exampl"e_text
), mislukt het rolloutproces. - Om dubbele aanhalingstekens binnen een tekenreeks te houden, ontsnap je ze met een backslash (
\
) zoals dit:my_examp\"le_var
– die zal worden toegepast alsmy_examp"le_var
.
Base64-gecodeerde variabelen
Als je omgevingsvariabele is gecodeerd met Base64 en je ondervindt problemen (bijv. 500 fouten in de browser, bouwfouten, runtime fouten, etc.), probeer dan de waarde van de variabele te wrappen met enkele aanhalingstekens.
Omgevingsvariabelen toevoegen
Omgevingsvariabelen kunnen worden toegevoegd in de stap Applicatiedetails bij het toevoegen van een applicatie of op de Instellingenpagina van je applicatie na het deployen.
In Applicatiedetails
Om omgevingsvariabelen toe te voegen bij het toevoegen van je applicatie, vouw je de sectie Omgevingsvariabelen uit, voer je de sleutel-waarde paren in, en selecteer je of de variabelen beschikbaar moeten zijn tijdens runtime en/of het bouwproces.
Na het deployen
Om omgevingsvariabelen toe te voegen na het deployen, ga je naar de Instellingen pagina van je applicatie, scroll je naar beneden naar de sectie Omgevingsvariabelen, en klik je op Omgevingsvariabele toevoegen. Voeg de key-value paren toe in het venster Omgevingsvariabele toevoegen popup en selecteer of de variabelen beschikbaar moeten zijn tijdens runtime en/of het bouwproces. Klik op Deploy changes om je variabele(n) toe te voegen en de applicatie automatisch opnieuw te deployen.
Omgevingsvariabelen bewerken
Je kunt variabele namen (sleutels) of waarden bewerken op de Instellingen pagina. Als je een variabele wilt bewerken, klik je op het pictogram Edit (potlood), breng je wijzigingen aan en klik je op Deploy changes om je variabele(n) bij te werken en de applicatie automatisch opnieuw te deployen.
Wanneer je een interne verbinding maakt en het selectievakje Omgevingsvariabelen toevoegen… selecteert, worden de variabelenamen (sleutels) automatisch aangemaakt. Sommige applicaties verwachten omgevingsvariabelen met andere namen. Als je bijvoorbeeld een database wilt gebruiken met Laravel, bevat het bestand database.php andere variabelenamen dan de variabelen die automatisch worden aangemaakt in MyKinsta. Om de namen van de variabelen te gebruiken die zijn gedefinieerd in de applicatie, moet je elke variabele naar behoefte bewerken en de sleutel wijzigen zodat deze overeenkomt met wat is gedefinieerd in het bestand database.php.
Omgevingsvariabelen gebruiken
Hoe je omgevingsvariabelen gebruikt, hangt af van je toepassing. In Node, bijvoorbeeld, kun je een variabele met de naam API_KEY
benaderen met process.env.API_KEY
. In PHP zou je getenv('API_KEY')
gebruiken.
Interne verbindingen en het bouwproces
Interne verbindingen zijn alleen beschikbaar tijdens runtime; ze zijn niet beschikbaar tijdens het bouwproces.
Als je applicatie probeert verbinding te maken met een database met behulp van een interne verbinding tijdens het bouwproces, veroorzaakt dit een fout die zegt dat de database niet draait, waardoor de build mislukt. Dit wordt verwacht omdat de interne verbinding niet live is tijdens het bouwen; deze kan alleen tijdens runtime worden gebruikt.
Er zijn een paar manieren om hier omheen te werken.
Optie 1: Verplaats de logica die verbinding maakt met de database van de bouwopdracht van de applicatie naar de startopdracht. Bijvoorbeeld: als je een commando als prisma migrate
in het bouwproces hebt en je verplaatst dat commando naar het startcommando, dan zal je applicatie alleen tijdens runtime toegang hebben tot de database en zal de build succesvol zijn.
Optie 2: Voeg naar behoefte aparte omgevingsvariabelen toe voor de databaseverbinding, de ene beschikbaar voor het bouwproces en de andere alleen voor runtime. De sleutels kunnen hetzelfde zijn (bijvoorbeeld DB_CONNECTION_URL
) zolang de ene alleen beschikbaar is tijdens het bouwproces en de andere alleen tijdens runtime. Gebruik de externe verbindingsgegevens van de database (Databases > dbnaam > Info > Externe verbindingen) voor de waarden van variabelen die gebruikt moeten worden tijdens het bouwproces.
Omgevingsvariabelen ingesteld door Kinsta
Kinsta stelt altijd PORT
in als de poort die door de webserver gebruikt wordt. Als je wilt dat je applicatie met de webserver communiceert, moet je deze omgevingsvariabele gebruiken. In Node.js zou je bijvoorbeeld op deze manier een server starten:
app.listen(process.env.PORT, () => {
console.log("Weather server is up and running")
})
Omgevingsvariabelen niet ingesteld door Kinsta
Standaard is de NODE_ENV
omgevingsvariabele niet ingesteld op production
voor Node.js applicaties; je moet deze omgevingsvariabele handmatig toevoegen.
Taalvoorbeelden voor omgevingsvariabelen
Hoe je omgevingsvariabelen gebruikt is afhankelijk van je applicatie. De volgende tabel laat zien hoe een omgevingsvariabele met de naam API_KEY in verschillende talen wordt gecalld:
Taal | Code |
---|---|
Ruby | ENV["API_KEY"] |
Node.js | process.env.API_KEY; |
Python | os.environ.get('API_KEY') |
Java | System.getenv("API_KEY"); |
Scala | System.getenv("API_KEY"); |
PHP | getenv('API_KEY'); |
Go | os.Getenv("API_KEY") |