-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Petit wiki de référence pour ne rien oublier, le but de ce projet créer une application basé sur des containers dockers :
- Container WildFly : backend API rest / Hibernate
- Container MariaDB : la base de donnée
- dans un futur proportionnel en temps aux misères que je rencontrerais un frontend en Angular 5 (si ça ce trouve d'ici là on en sera au 8 ...)
docker run --name mariadb-container -v /opt/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootpassword -d mariadb-utf8:latest
Rien de sorcier ici on créé un container que l'on nommera mariadb-container
on ajoute un volume afin de ne pas perdre le contenu de la base quand on éteins le container /opt/mariadb:/var/lib/mysql
il faut paramétrer un mot de passe root MYSQL_ROOT_PASSWORD=rootpassword
et ensuite indiquer le nom de l'image sur laquelle on se base mariadb-utf8:latest
Une fois le container en route il faut créer une base dbschema vu que le container wildfly tentera de s'y connecter par la suite.
Nous allons créer une image docker personnalisée qui correspondra à nos besoins afin de nous baser dessus pour faire notre container. Pour cela nous avons besoins :
- un fichier Dockerfile : wildfly/
- un fichier entrypoint afin de créer notre propre script d'entrypoint : wildfly/bin/ ce fichier sert à créer des variables qui récupère les informations de la base de donnée indiqué dans le Dockerfile cela évite de les répéter
- un fichier script ainsi que le fichier cli de config pour paramétrer la connexion à la BDD dans wildfly
- le jar driver pour la connexion à la base MariaDB ainsi que le fichier module.xml comprenant la déclaration des modules pour gérer le javax et le drivers mariaDB : modules/system/layers/base/org/mariadb/driver/main/ ainsi que des divers fichiers/scripts nécessaires à cette personnalisation, tout se trouve dans le répertoire wildfly.
Via la commande docker build --tag=wildfly-image .
nous créons notre image puis nous créons le container via docker run --name wildfly-cont -it wildfly-image
Pour récupérer l'ip du container : docker inspect -f '{{ .NetworkSettings.IPAddress }}' nomducontainer
Notre application est basé sur un projet Maven, décomposons le fichier POM :
- Voici l'import du wildfly 11.0.0.final BOM comprenant : wildfly-javaee7-with-tools-11.0.0.Final donc entre autre JavaEE stack !
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.wildfly.bom</groupId>
<artifactId>wildfly-javaee7-with-tools</artifactId>
<version>${wildfly.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- Quand l'application est compilé elle sera déployé sur notre serveur wildfly directement grâce au wildfly-maven-plugin :
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>${wildfly.plugins.version}</version>
<executions>
<execution>
<id>deploy-webapp</id>
<phase>install</phase>
<goals>
<goal>deploy</goal>
</goals>
<configuration>
<hostname>172.17.0.3</hostname>
<port>9990</port>
<username>admin</username>
<password>admin</password>
</configuration>
</execution>
</executions>
</plugin>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.ejb</groupId>
<artifactId>jboss-ejb-api_3.2_spec</artifactId>
<scope>provided</scope>
</dependency>
Chaque entité a son endpoint qui possède un @ejb authentification chargé de vérifier les droits de l'utilisateur vis à vis de chaque endpoint & un @ejb response pour l'entité charger d'utiliser le service adéquat et renvoyer la réponse