ABC-Groep

DevOps: Hoe kan je het opzetten.

Het doel van deze blog-serie is om in sneltempo een project van begin tot einde te ontwikkelen met de laatste java technologieën zodat nadien de focus kan komen te liggen op de eigenlijke applicatie. Dit zullen we verwezenlijken met JHipster, docker en Jenkins.

Installatie Jhipster

Er is een goed gedocumenteerde wiki om de nodige installaties te doen voor JHipster indien de uitleg hieronder onvoldoende duidelijkheid schept.
In het 1ste deel hebben we docker geïnstalleerd waardoor onderstaande instructies gelijk zijn voor om het even welke installatie.

Eerst halen we de laatste versie op van jhipster:

$ docker pull jhipster/jhipster

Hierna voorzien we een folder op onze eigen computer om te linken met de jhipster container.

$ mkdir /cygdrive/c/Users/mathias.verelst/jhipster

Note: Deze folder-locatie is specifiek voor mijn windows-home folder via een cygwin terminal op linux kan je gewoon ~/jhipster gebruiken. Ook gaan we gaan ervan uit dat er reeds een verborgen maven folder ".m2" staat.

We maken nu een instantie aan van de jhipster container waarbij de we de folders linken en de poorten beschikbaar maken.

$ docker run --name abc_jhipster -v /c/Users/mathias.verelst//jhipster:/home/jhipster/app –v/c/Users/mathias.verelst/.m2:/home/jhipster/.m2 -p 8080:8080 -p 3000:3000 -p 3001:3001 -d –t jhipster/jhipster

Note: In tegenstelling tot hierboven moet ik de 'cygdrive' niet in het pad zetten maar moet dit het pad zijn zoals zichtbaar vanuit windows. Op linux kan je gewoon ~/jhipster en ~/.m2 gebruiken.

Om deze jhipster container te starten en stoppen gebruik je onderstaande commando's:

$ docker stop abc_jhipster
$ docker start abc_jhipster

Indien je meer specifieke informatie wilt hebben over de instantie kan dit met:

$ docker inspect abc_jhipster

undefined

Project setup

Onderstaand commando zal een generate script van jhipster triggeren:

$ docker exec -it abc_jhipster yo jhipster

Momenteel houden we het bij al de default opties. Enkel de production database verander ik naar 'postgresql'
Zoals je zal zien gaan we voor elk commando dat we willen uitvoeren 'docker exec -it abc_jhipster' plaatsen.

Dit wilt zeggen dat wat hierna komt een commando is dat we willen uitvoeren op de container instantie met naam 'abc_jhipster'

Op deze manier is het ook mogelijk om het volgende uit te voeren:

$ docker exec -it abc_jhipster bash

Hiermee krijg je een interactieve terminal ter beschikking. Aangezien docker vaak misbruikt wordt als een VM lees je best eerst nog deze tips.
Het belangrijkste om te onthouden is dat docker met een grow-only memory model werkt. Dit omdat normaal de hele service reeds volledig geïnstalleerd wordt op bij aanvang.

Indien er toch veel data weggeschreven zou worden waar dit belangrijk is voor de service zelf zoals bij een databank is het mogelijk deze te koppelen met shared volumes zoals we  doen in ons voorbeeld.

Nu we ons leeg project hebben zullen we een standaard datamodel introduceren zoals te zien is in de JHipster studio.

$ docker exec -u root -it abc_jhipster npm install -g jhipster-uml
$ docker exec -it abc_jhipster bash -c "curl -s 'https://raw.githubusercontent.com/MathiasVE/jhipster-demo/master/datamodel.jdl' > datamodel.jdl"
$ docker exec -it abc_jhipster jhipster-uml datamodel.jdl

undefined

De applicatie bouwen en lanceren kan dit met maven op volgende manier:

$ docker exec -it abc_jhipster ./mvnw

(Opgelet: Indien je voor gradle gekozen hebt tijdens de project setup moet het gradle-script aangeroepen worden.)

Om nu te weten via welk IP je de applicatie kan bereiken kan je dit zien via docker door de status op te vragen van de containers.

$ docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                              NAMES
5951fa6994ad           jhipster/jhipster    "tail -f /home/jhipst"       36 hours ago         Up 3 hours          10.0.75.2:3000-3001->3000-3001/tcp, 10.0.75.2:8080->8080/tcp   jhipster

In ons voorbeeld is dit 10.0.75.2:8080.
Wat we nu gedaan hebben is van onze jhipster build-container gebruik gemaakt om in deze container de applicatie ter beschikking te maken.

In deel 3 van deze serie zullen we zien hoe we moet Jenkins de applicatie kunnen deployen naar een nieuwe container instantie.

Git

We gaan onze demo-code meteen op een git-repository zetten. Best gebruik je je eigen git-repository hiervoor. Het aanmaken van een git-hub account kan snel via https://github.com/join.
Hierna installeer je git eerst op je computer. (https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)

Onderstaande commands gaan ervan uit dat git geïnstalleerd is en je in de shared workspace directory zit van jhipster.

$ git init
$ git config --global user.email 'mathias.ver.elst@gmail.com'
$ git config --global user.name 'Mathias Ver Elst'
$ git add –A
$ git commit -m "Initial commit"
$ git remote add origin https://github.com/MathiasVE/jhipster-demo.git
$ git push -u origin master

Van hieruit gaan we ook meteen enkele branches toevoegen:

$ git checkout -b base
$ git push origin base
$ git checkout -b development
$ git push origin development
$ git checkout -b testing
$ git push origin testing

undefined

Wij gebruiken cookies om ervoor te zorgen dat onze website voor de bezoeker beter werkt. Daarnaast gebruiken wij o.a. cookies voor onze webstatistieken. Meer informatie