Giter VIP home page Giter VIP logo

cloud-tp2's Introduction

TP2 : Docker

Le but de ce TP sera de créer des images docker du front et du back pour pouvoir lancer vos applications sous docker.

Prérequis

N'hésitez pas à revoir les TP sur Docker (dockerfile, docker-compose)

Les Questions

Back

Dockerfile

  • Le Dockerfile devra être situé dans votre dossier back.

  • Le Dockerfile pourra créer une image avec la commande suivante : docker build -t back

Rappel: le -t permet de nommer l'image

  • L'image pourra être lancée localement avec la commande suivante : docker run -p 3000:3000 back

  • Vous pourrez ensuite appeler votre API avec postman pour vérifier son bon fonctionnement

Le contenu du Dockerfile

  • Q1: Un Dockerfile commence toujours par un FROM ici lequel ? Complétez votre Dockerfile

  • Q2: Vous devez ensuite charger votre application dans votre Dockerfile à l'aide de COPY

    • Evitez d'inclure le .git ou le node_modules dans votre COPY => .dockerignore
  • Q3: Une fois la copie faite une étape est cruciale, laquelle ? Indice : RUN

    • Ne pas oubliez de paramétrer le WORKDIR de votre dockerfile
  • Q4: Une fois cela fait, il faut indiquer à votre Dockerfile qu'elle commande il va devoir exécuter lors du lancement de l'image. Complétez votre Dockerfile.

  • Q BONUS: chaque étape de votre Dockerfile est un layer , si un layer change toutes les étapes suivantes change. Il faudrait que si je ne change pas mes dépendances "package.json", mon docker build ne re-télécharge pas les dépendances. Comment faire ? Modifier votre Dockerfile.

BRAVO ! Vous avez votre premier Dockerfile 🎉 Une fois toutes les étapes faites n'hésitez pas à tester avec Postman.

Docker-compose

Il est sympa de lancer votre application via la commande docker mais cela n'est pas très pratique. Nous allons donc écrire un docker-compose qui va nous permettre de lancer notre application de façon plus simple.

On pourra à la fin de cette partie lancer notre application avec un docker-compose up -d

Rappel: -d pour daemon permet de lancer votre container en arrière-plan.

Créer un fichier docker-compose.yml à la racine.

  • Q5: Créer un service back qui permettra de lancer votre application

    • Un service est défini avec plusieurs données, ici on a besoin de :

      • l'image à utiliser (ici la vôtre) qui sera prise depuis votre dossier back, indice: chercher le mot clé build dans la doc officielle de docker-compose

      • le port qui permettra d'exposer un port sur votre machine, ici 3000

Maintenant avec la commande docker-compose build et docker-compose up -d back vous pouvez tester votre API avec postman.

Nous utilisons notre application avec Sqlite ce qui est bien pour les tests en local mais il serait plus judicieux d'utiliser un autre SGBD pour la production.

Nous allons donc mettre en place MySql sous docker.

  • Q6: Ajouter un service mysql qui dépendra de l'image officiel mysql, n'oubliez pas de gérer les variables d'environnements => doc
  • Q7: Maintenant que mysql est présent il vous faut rajouter les variables d’environnement de sequelize (back/config/config.js) dans votre service back de votre docker-compose pour pouvoir communiquer avec la base de données.
env: process.env.NODE_ENV, //production
username:  process.env.DB_USERNAME,
password:  process.env.DB_PASSWORD,
database:  process.env.DB_NAME,
host:  process.env.DB_HOSTNAME, //le nom du service mysql (résolution automatique par docker)
use_env_variable:  'DATABASE_URL'

Encore une fois BRAVO ! 🎉 Votre service back communique avec votre base de données.

Vous pouvez lancer tous vos services avec la commande : docker-compose up -d

N'oubliez pas d'initialiser la base de données Mysql sinon cela risque de ne pas marcher 😀

Front

petit bonus front, on va réaliser le même dockerfile que pour le back.

Dockerfile

  • Q8: Quel FROM faut-il utiliser pour un front angular ? Complétez votre Dockerfile

  • Q9: Vous devez ensuite charger votre application dans votre Dockerfile à l'aide de COPY

    • Evitez d'inclure le .git ou le node_modules dans votre COPY => .dockerignore
  • Q10: Une fois la copie faite il faut installer les dépendances

    • N'oubliez pas d'installer la dépendance @angular/cli@^9
  • Q11: Une fois cela fait, il faut indiquer à votre Dockerfile qu'elle commande il va devoir exécuter lors du lancement de l'image. Complétez votre Dockerfile.

    • Tips: ne pas oublier l'option --host 0.0.0.0

Finalement les dockerfiles sont similaire.

Docker-compose

  • Q12: Nous allons maintenant rajouter un nouveau service du même style que le service back dans notre docker-compose pour simplifier le lancement de notre front. n'oubliez pas d'exposer le port 4200.

BRAVO ! 🎉 Si vous allez sur http://localhost:4200 vous pouvez dorénavant interagir avec votre front, votre back et votre base de données et tout ça sous docker !

cloud-tp2's People

Contributors

k-jean avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.