‫Oke. Nu je alles hebt geleerd over volumes en bind-mounts, en
‫waarom we ons zorgen moeten maken over persistente gegevens, gaan we iets doen dat realistisch is, namelijk database-upgrades.
‫Stelt u zich een situatie voor waarin u een bepaalde versie van een database gebruikt.
‫Laten we zeggen postgres, en je moet de patchversie bijwerken omdat er misschien een beveiligingsoplossing is,
‫of een bugfix, of zoiets.
‫Normaal gesproken zou u op een systeem de software gewoon bijwerken. Je zou een update of upgrade van het pakketbeheersysteem
‫uitvoeren en het zou alle updates voor de bibliotheken en alles zelf afhandelen.
‫Maar hoe doen we dat in een container?
‫Want als we proberen de best practice te volgen om applicaties in containers niet bij te werken, maar de container
‫te vervangen door een nieuwe versie, hoe doen we dat dan met de database?
‫Wat je voor deze opdracht gaat doen, is dat je Docker Hub gaat gebruiken om informatie te krijgen over het
‫bijwerken van de specifieke versie van postgres. We beginnen met het specifiek maken van
‫een container met versie 9. 6. 1, wat een oudere versie is. En u zult een benoemd volume moeten maken.
‫Je zult hiervoor op de documentatie van Docker Hub moeten leunen, met behulp van de officiële postgres-repository.
‫U moet naar de Dockerfile voor die specifieke versie gaan en leren
‫wat het volumepad moet zijn. Vervolgens kunt u aan de linkerkant uw volume een naam geven die u maar wilt.
‫Maar onthoud die dubbele punt aan de rechterkant ervan, dat moet het pad zijn waar de daadwerkelijke
‫databases in de container komen.
‫Als je dat allemaal doorhebt en je container hebt gestart, zou je de logs moeten gaan controleren om te zien wanneer
‫het klaar is met het maken van de databases en alle opstartdingen. Omdat de eerste keer dat
‫u een databasecontainer start, deze meestal een heleboel dingen op de achtergrond
‫doet, zoals het maken van de admin-gebruiker en een standaarddatabase, enzovoort.
‫Er zal een punt zijn waarop de logboeken zullen stoppen en dan zal het gewoon worden uitgevoerd.
‫Als je het correct hebt gedaan, kun je een docker-volume ls doen en het volume daar zien, met de naam die je het hebt gegeven,
‫en je zou die container moeten kunnen stoppen. Vervolgens ga je een nieuwe
‫container maken met een nieuwe versie.
‫Het zal een zeer vergelijkbare opdracht zijn als de eerste, alleen specificeer je een andere versie, je moet
‫er ook voor zorgen dat je hetzelfde volume met dezelfde naam wilt specificeren, omdat het de gegevens moet gebruiken die je
‫in de eerste hebt gebruikt.
‫Zorg er natuurlijk voor dat u de eerste stopt, omdat deze niet beide tegelijkertijd
‫toegang hebben tot dezelfde gegevens.
‫Als je eenmaal bent begonnen, ga je gang en controleer je de logboeken opnieuw voor die nieuwe container.
‫Wat je zou moeten zien, is dat het maar een paar regels opstartlogboeken heeft, omdat het niet al het werk van
‫de eerste keer opstarten hoeft te doen.
‫Dat is een soort van hoe je weet dat het hetzelfde
‫benoemde volume gebruikt, is dat de tweede keer dat het opstart, het misschien maar vier of vijf logboekvermeldingen heeft.
‫Dit is dus een realistisch scenario.
‫U zult dit doen als u ooit productiedatabases uitvoert of iets dat u up-to-date moet houden.
‫Houd er rekening mee dat de meeste databasesystemen grote upgrades niet automatisch uitvoeren.
‫Er is meestal een hulpmiddel voor nodig. Met postgres of MySQL is er een aparte tool voor elk van
‫hen die je moet uitvoeren.
‫Dit gaat eigenlijk alleen maar over het upgraden van de patchversies of dat laatste nummer waarvoor
‫geen schemawijzigingen of grote updates van de gegevenscode zelf nodig zijn.
‫Zoals eerder, als
‫je vastloopt, geen zorgen, want dit is nieuw en het is misschien niet zo duidelijk in Docker Hub.
‫Als je op een gegeven moment vastloopt en Docker Hub je niet
‫helpt, kijk dan gewoon naar de volgende lezing, waarin ik dezelfde oefening doorloop als ik het zou doen.
‫Veel geluk.