Meer informatie over Docker environment
In deze opdracht gaan we werken met environment variabelen binnen Docker Compose. Environment variabelen zijn zeer handig om instellingen, zoals gebruikersnamen, wachtwoorden, database-connectionstrings, API-sleutels, en meer, op een centrale locatie op te slaan.
Opdracht 4: Docker environment
Stap 1: Open de directory “Docker-Demo-Project/studentversie/opdracht4.`
Stap 2: Open het docker-compose.yaml
document.
Stap 3: Voeg de onderstaande regel toe aan het docker-compose.yaml
bestand:
environment:
- Title=
- SubTitle=
- ConnectionString=
Stap 4: Pas de waardes van de environment variabelen aan naar iets leuks. Bijvoorbeeld:
environment:
- Title=Docker Workshop | opdracht 4
- SubTitle=Deze waarde komt direct uit de docker-compose.yaml
- ConnectionString=DataSource=app.db;
Antwoord - Volledige docker-compose
version: "3.8" services: envviewer: build: context: ./envviewer/envviewer/ dockerfile: ./Dockerfile ports: - "8080:8080" - "8081:8081" restart: always develop: watch: - action: rebuild path: ./envviewer/ environment: - Title=Docker Workshop | opdracht 4 - SubTitle=Deze waarde komt direct uit de docker-compose.yaml - ConnectionString=DataSource=app.db;
Stap 5: Open een CMD/Terminal en navigeer naar de directory van Docker-Demo-Project/studentversie/opdracht4
.
Stap 6: Run de volgende commando in je CMD/Terminal om je docker containers te builen en op te starten.
docker compose watch
Stap 7: Ga naar http://localhost:8080/ en kijk of de website wordt ingeladen.
In dit voorbeeld project worden de waardes van de environment direct getoond op de pagina. Dit komt omdat in HomeController
de waardes worden uitgelezen en in de ViewModel worden opgeslagen. Dit zorgt ervoor dat home.cshtml
toegang heeft tot de environment variabelen. Afhankelijk van de variabelen en de programmeertaal kan het uitlezen van de variabelen verschillen.
ppublic IActionResult Index() {
HomeModel model = new HomeModel();
model.Title = Environment.GetEnvironmentVariable("Title");
model.SubTitle = Environment.GetEnvironmentVariable("SubTitle");
model.ConnectionString = Environment.GetEnvironmentVariable("ConnectionString");
return View(model);
}
In de praktijk zou dit niet snel gedaan worden. Environment variabelen worden, zoals eerder aangegeven vaak gebruikt voor API keys of database connection strings.
Stap 8: Voeg een nieuw environment variabel toe aan docker-compose.yaml
.
- Bijvoorbeeld:
- MijnEigenRegel=
Stap 9: Open de CMD/Terminal waarin je bij stap 6 docker compose watch
hebt uitgevoerd en stop het actieve commando door ctrl
+ c
tegelijk in te drukken of door de CMD/Terminal te sluiten.
Stap 10: Stop of verwijder de actieve docker containers, zoals je bij opdracht 3 > stap 12 ook hebt gedaan.
Stap 11: Open het voorbeeld project uit de map opdracht4
in een code editor zoals Visual Studio of Rider.
Stap 12: Open de Index
methode in de HomeController.cs
(Controllers/HomeController/Index).
Stap 13: Voeg een nieuwe regel toe aan de methode.
- Bijvoorbeeld:
model.MijnEigenRegel = Environment.GetEnvironmentVariable("MijnEigenRegel");
Stap 14: Open Index.cshtml
(Views/Home/Index.cshtml
).
Stap 15: Voeg een nieuwe regel toe aan de pagina.
- Bijvoorbeeld:
<p>@Model.MijnEigenRegel</p>
Stap 16: Sla alle wijzigingen op een kijk of je nieuwe regel op de website wordt getoond.
Als je niet meer zeker weet hoe
- Open een CMD/Terminal en navigeer naar de directory van
opdracht4
- Run de volgende commando in je CMD/Terminal om je docker containers te builen en op te starten
docker compose watch
- Ga naar http://localhost:8080/
Gelukt
- Het is gelukt om environment variabelen toe te voegen aan de
docker-compose.yaml
- Het is gelukt om de variabelen binnen het voorbeeld project te gebruiken