Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
equipes:devteam:petale_docker_deployment [2020/06/26 15:47] garciaflores |
equipes:devteam:petale_docker_deployment [2020/12/03 16:01] (Version actuelle) garciaflores ↷ Page déplacée de systeme:petale_docker_deployment à equipes:devteam:petale_docker_deployment |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
DOCUMENTATION DE L' | DOCUMENTATION DE L' | ||
- | participants: | + | |
+ | participants: | ||
date: 5-8 juin 2020 | date: 5-8 juin 2020 | ||
- | I. INSTALLATION DU MODULE D' | + | |
- | 1. Création d'une image docker pour le module d' | + | ===I. INSTALLATION DU MODULE D' |
- | 1.1.1 Création du fichier dockerfile Dockerfile / | + | 1. Création d'une image docker pour le module d' |
- | λ> docker build --pull --rm -f " | + | 1.1.1 Création du fichier dockerfile Dockerfile / |
- | 1.2 lancer l' | + | λ> docker build --pull --rm -f " |
- | λ> docker run --rm -it -p 3000: | + | 1.2 lancer l' |
+ | λ> docker run --rm -it -p 3000: | ||
2. Le serveur écoute sur localhost | 2. Le serveur écoute sur localhost | ||
- | 3. On va rajouter pm2 pour que le serveur soit persistant | + | |
- | 3.1 On édite les fichiers authentification/ | + | 3. On va rajouter pm2 pour que le serveur soit persistant\\ |
- | 3.2 On va récréer et rédemmarer | + | 3.1 On édite les fichiers authentification/ |
- | λ> docker build --pull --rm -f " | + | 3.2 On va récréer et rédemmarer |
- | [PM2] Spawning PM2 daemon with pm2_home=/ | + | λ> docker build --pull --rm -f " |
- | [PM2] PM2 Successfully daemonized | + | |
- | [PM2][WARN] Applications authentication_server not running, starting... | + | |
- | [PM2] App [authentication_server] launched (1 instances) | + | |
- | ┌───────────────────────┬────┬─────────┬──────┬─────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐ | + | |
- | │ App name | + | |
- | ├───────────────────────┼────┼─────────┼──────┼─────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤ | + | ^ App name |
- | │ authentication_server | + | | authentication_server |
- | └───────────────────────┴────┴─────────┴──────┴─────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘ | + | |
- | Use `pm2 show < | + | |
- | Done in 1.28s. | + | |
- | 3.3 PM2 a été intégré à l' | + | 3.3 PM2 a été intégré à l' |
- | 3.4 On a un problème parce que le containeur s' | + | 3.4 On a un problème parce que le containeur s' |
- | authentication on master [!?] took 2s | + | authentication on master [!?] took 2s\\ |
- | λ> docker ps -a | + | λ> docker ps -a |
- | CONTAINER ID IMAGE | + | CONTAINER ID IMAGE |
% | % | ||
- | 3.5 ON rajoute la ligne sur FROM Dockerfile | + | 3.5 ON rajoute la ligne sur FROM Dockerfile\\ |
- | CMD [" | + | CMD [" |
- | 3.6 ON régénère l' | + | 3.6 ON régénère l' |
- | λ> docker build --pull --rm -f " | + | λ> docker build --pull --rm -f " |
- | 3.6bis (on lance toutes ces commandes depuis authentication/ | + | 3.6bis (on lance toutes ces commandes depuis authentication/ |
- | 3.7 on relance | + | 3.7 on relance\\ |
- | λ> docker run --rm -it -p 3000: | + | λ> docker run --rm -it -p 3000: |
- | 2020-06-05T14: | + | |
- | 2020-06-05T14: | + | |
- | 2020-06-05T14: | + | |
- | 2020-06-05T14: | + | |
- | 2020-06-05 14:19 +00:00: GET / 200 8.003 ms - 35 | + | |
- | 3.8 ON procède à paramétrer le fichier authentification / server / config / auth.js | + | 3.8 ON procède à paramétrer le fichier authentification / server / config / auth.js\\ |
- | 3.9 Pour sécuriser l' | + | 3.9 Pour sécuriser l' |
- | λ> docker run --rm -it -p 3000: | + | λ> docker run --rm -it -p 3000: |
- | (c'est la variable NOD_ENV qui pemrmet de passer les identifiants) | + | (c'est la variable NOD_ENV qui pemrmet de passer les identifiants)\\ |
- | 3.10 (notamment on a balancer tous les données pour s' | + | 3.10 (notamment on a balancer tous les données pour s' |
- | 3.11 On fait un commit (git add Dockerfile, process.json, | + | 3.11 On fait un commit (`git add Dockerfile`, process.json, |
4. On fait lipnssh sur lipn-intranet-dev | 4. On fait lipnssh sur lipn-intranet-dev | ||
+ | |||
5. on fait git pull sur le serveur | 5. on fait git pull sur le serveur | ||
+ | |||
6. on créer l' | 6. on créer l' | ||
- | root@lipn-intranet-dev: | + | |
- | 7. Nous avons installée apache2 sur le serveur et ouvert (avec Xavier) un accès vers | + | 7. Nous avons installée apache2 sur le serveur et ouvert (avec Xavier) un accès vers http:// |
- | http:// | + | |
8. On test avec curl si le serveur repond sur le port 3000 | 8. On test avec curl si le serveur repond sur le port 3000 | ||
- | λ> curl localhost: | + | |
- | curl -d ' | + | |
+ | {" | ||
+ | garciaflores@villetaneuse: | ||
- | {" | ||
8.1 Erreur: | 8.1 Erreur: | ||
- | {" | + | |
8.2 Il faut créer un fichier docker.compose.yml dans le root du projet authentification pour contrer le problème des guillemets (docker ne les interpète pas bien)... ce problème concerne la sécurisation des clés d' | 8.2 Il faut créer un fichier docker.compose.yml dans le root du projet authentification pour contrer le problème des guillemets (docker ne les interpète pas bien)... ce problème concerne la sécurisation des clés d' | ||
+ | root@lipn-intranet-dev: | ||
+ | 8.3 La commande CURL marche à partir de lipnssh avec les identifiants de @jaime (pas avec ceux de Jorge ni avec ceux d' | ||
+ | 9. C'est très bien, on est authenthifié, | ||
+ | 9.1 On modifie la commande LDAP sur server/ | ||
- | root@lipn-intranet-dev:~/ | + | 10. On assume que le servur marche, pusisqu' |
- | 8.3 La commande CURL marche à partir de lipnssh avec les identifiants de @jaime (pas avec ceux de Jorge ni avec ceux d' | ||
- | 9. C'est très bien, on est authenthifié, | ||
- | 9.1 On modifie la commande LDAP sur server/ | ||
- | 10. On assume que le servur marche, pusisqu' | ||
11. On procède à refaire notre docker... | 11. On procède à refaire notre docker... | ||
- | client/ | + | ==client/ |
12. ON a créer le Dockerfile de sorte qu'on désactive nginx et on active Apache | 12. ON a créer le Dockerfile de sorte qu'on désactive nginx et on active Apache | ||
- | λ> docker build --pull --rm -f " | + | |
- | 12.1 Nous avons un erreur d' | + | 12.1 Nous avons un erreur d' |
- | 12.2 ON n' | + | 12.2 ON n' |
12.3 On a finalement compilé l' | 12.3 On a finalement compilé l' | ||
+ | |||
13. Dans le root d' | 13. Dans le root d' | ||
+ | |||
14. La commande docker-compose up crée les deux services qu'on vient de définir sur docker-compose.yml | 14. La commande docker-compose up crée les deux services qu'on vient de définir sur docker-compose.yml | ||
- | λ> docker-compose up | + | |
- | (Jaime nous explique que la commande docker-compose équivaut à des commandes succéssives du build, mais paramétrées avec un fichier .yml) | + | |
- | 14. La commande docker-compose up crée les deux services qu'on vient de définir sur docker-compose.yml | + | |
- | λ> docker-compose up | + | |
(Jaime nous explique que la commande docker-compose équivaut à des commandes succéssives du build, mais paramétrées avec un fichier .yml) | (Jaime nous explique que la commande docker-compose équivaut à des commandes succéssives du build, mais paramétrées avec un fichier .yml) | ||
+ | |||
15. Nous avons une erreur sur le docker-compose | 15. Nous avons une erreur sur le docker-compose | ||
- | ERROR: for authentication-client Cannot start service client: driver failed programming external connectivity on endpoint authentication-client (be8d6229453f396bb2dc7b3bfd150b6f56c58c50218f1db81c6b560a856719c6): | + | |
- | l' | + | l' |
- | 15.1 ON essaye de sortir notre fichier .env de l' | + | 15.1 ON essaye de sortir notre fichier .env de l' |
- | 15.2 on galère avec les guillemets et l' | + | 15.2 on galère avec les guillemets et l' |
15.3 dans le serveur intranet-dev ça marche | 15.3 dans le serveur intranet-dev ça marche | ||
- | 16. Il faut modifier le proxy pour que | + | |
- | lipn.univ-paris13.fr/ | + | 16. Il faut modifier le proxy pour que lipn.univ-paris13.fr/ |
16.1 ON a éditer le fichier / | 16.1 ON a éditer le fichier / | ||
- | ProxyPass / http:// | + | |
- | ProxyPassReverse / http:// | + | ProxyPassReverse / http:// |
16.2 Maintenant nous avons un problème de ressources (mais la page réponde sur ) | 16.2 Maintenant nous avons un problème de ressources (mais la page réponde sur ) | ||
- | http:// | + | |
- | [lipn.univ-paris13.fr] | + | [lipn.univ-paris13.fr] |
- | Apache2 Debian Default Page: It works | + | Apache2 Debian Default Page: It works |
- | Apache2 Debian Default Page It works! This is the default welcome page used to test the correct operation of the Apache2 server after installation on Debian systems. If you can read this page, it means that the Apache HTTP server installed at this site is working properly. You should | + | Apache2 Debian Default Page It works! This is the default welcome page used to test the correct operation of the Apache2 server after installation on Debian systems. If you can read this page, it means that the Apache HTTP server installed at this site is working properly. You should |
- | CMD [" | + | CMD [" |
- | | + | On clone https:// |
- | [depot.lipn.univ-paris13.fr] | + | |
- | Sign in | + | Sign in |
- | - GitLab | + | |
- | LIPN GitLab | + | LIPN GitLab |
- | | + | On va créer le fichier Dockerfile à la racine de gateway |
- | | + | FROM node: |
Working directory | Working directory | ||
WORKDIR /app | WORKDIR /app | ||
Ligne 126: | Ligne 133: | ||
CMD [" | CMD [" | ||
- | | + | On attire notre attention sur le fichier gateway.config.yml où son configurés les ports d' |
+ | On configure le fichier docker.compose.yml | ||
- | Jorge GARCIA FLORES a envoyé une image | + | version: '3.1' |
- | image.png | + | |
- | Télécharger image.png (109.93 KB) | + | gateway: |
- | Jorge GARCIA FLORES | + | container_name: |
+ | restart: always | ||
+ | build: | ||
+ | | ||
+ | - 8080:8080 | ||
+ | environment: | ||
+ | - AUTH_ENDPOINT=http:// | ||
+ | - BOOKING_ENDPOINT=http:// | ||
+ | - PUBLICATION_ENDPOINT=http:// | ||
- | On configure | + | depuis /gateway on fait docker-compose up\\ |
+ | cette commande a créer les images et il a lancer les conteneurs docker\\ | ||
+ | on lance le service d' | ||
+ | cd / | ||
+ | | ||
+ | Nous avons un erreur parce qu' | ||
+ | On configure les ports sur un ficher | ||
- | version: ' | + | GATEWAY_PORT=8000 |
+ | GATEWAY_HOST=localhost | ||
+ | AUTH_ENDPOINT=http:// | ||
+ | BOOKING_ENDPOINT=http:// | ||
+ | PUBLICATION_ENDPOINT=http:// | ||
- | services: | + | |
- | gateway: | + | |
- | container_name: | + | |
- | restart: always | + | |
- | build: . | + | |
- | ports: | + | |
- | - 8080:8080 | + | |
- | environment: | + | |
- | - AUTH_ENDPOINT=http:// | + | |
- | - BOOKING_ENDPOINT=http:// | + | |
- | - PUBLICATION_ENDPOINT=http:// | + | |
- | Jorge GARCIA FLORES | + | |
- | depuis /gateway on fait docker-compose up | + | |
- | cette commande a créer les images et il a lancer les conteneurs docker | + | |
- | + | ||
- | on lance le service d' | + | |
- | cd / | + | |
- | docker-compose up | + | |
- | + | ||
- | Nous avons un erreur parce qu' | + | |
- | + | ||
- | On configure les ports sur un ficher .env dans /gateway | + | |
- | + | ||
- | GATEWAY_PORT=8000 | + | |
- | GATEWAY_HOST=localhost | + | |
- | AUTH_ENDPOINT=http:// | + | |
- | BOOKING_ENDPOINT=http:// | + | |
- | PUBLICATION_ENDPOINT=http:// | + | |
- | + | ||
- | | + | |
MAIS l' | MAIS l' | ||
+ | On va le ressoudre de la façon suivante: | ||
- | On va le ressoudre de la façon suivante: | ||
- | |||
- | image.png | ||
- | Télécharger image.png (66.5 KB) | ||
25.1 sur le docker.compose on déclare ports: 8000:8080 | 25.1 sur le docker.compose on déclare ports: 8000:8080 | ||
c'est à dire, le port extérieur 8000 est redirigé vers le port 8080 du conteneur docker | c'est à dire, le port extérieur 8000 est redirigé vers le port 8080 du conteneur docker | ||
- | 25.2 et sur le Docker file on expose 8080 | + | 25.2 et sur le Docker file on expose 8080\\ |
- | image.png | + | image.png\\ |
- | Télécharger image.png (51.57 KB) | + | Télécharger image.png (51.57 KB)\\ |
26 on supprime le fichier .env qu'on avait fait sur /gateway | 26 on supprime le fichier .env qu'on avait fait sur /gateway | ||
- | 27 on démarre le serveur sur intranet-dev avec docker-compose up -d pour lui dire que c'est un daemon | ||
- | image.png | ||
- | Télécharger image.png (167.97 KB) | ||
- | maintenant les conteneurs | + | 27 on démarre le serveur sur intranet-dev avec docker-compose up -d pour lui dire que c'est un daemon\\ |
+ | image.png\\ | ||
+ | Télécharger image.png (167.97 KB)\\ | ||
- | et sur le navigateur depuis l' | + | maintenant les conteneurs docker pour l' |
- | Screenshot_20200612_075852.png | + | Screenshot_20200612_075852.png\\ |
- | Télécharger Screenshot_20200612_075852.png (283.95 KB) | + | Télécharger Screenshot_20200612_075852.png (283.95 KB)\\ |
- | | + | On va tester juste le serveur d' |
et nous avons un erreur Bad request | et nous avons un erreur Bad request | ||
- | curl -d ' | + | |
- | curl -d ' | + | curl -d ' |
- | Empty reponse from server | + | Empty reponse from server |
- | | + | On essaye de changer le port du gateway à 8081 sur docker-compose.yml |
- | services: | + | |
- | gateway: | + | gateway: |
- | container_name: | + | container_name: |
- | restart: always | + | restart: always |
- | build: . | + | build: . |
- | ports: | + | ports: |
- | - 8081:8080 | + | - 8081:8080 |
- | environment: | + | environment: |
- | - GATEWAY_PORT=8080 | + | - GATEWAY_PORT=8080 |
- | - GATEWAY_HOST=localhost | + | - GATEWAY_HOST=localhost |
- | - AUTH_ENDPOINT=http:// | + | - AUTH_ENDPOINT=http:// |
- | - BOOKING_ENDPOINT=http:// | + | - BOOKING_ENDPOINT=http:// |
- | - PUBLICATION_ENDPOINT=http:// | + | - PUBLICATION_ENDPOINT=http:// |
- | Jorge GARCIA FLORES | + | |
- | + | ||
- | On essaye de mofidier gateway/ | + | |
- | + | ||
- | Jorge GARCIA FLORES | + | |
- | | + | On essaye de mofidier gateway/ |
+ | Notre problème est que les containeurs docker ne communique pas entre eux (gateway est isolé d' | ||
31.1 On va créer un réseaux virtuel entre containeurs docker | 31.1 On va créer un réseaux virtuel entre containeurs docker | ||
- | root@lipn-intranet-dev: | + | |
- | root@lipn-intranet-dev: | + | root@lipn-intranet-dev: |
Jaime ARIAS | Jaime ARIAS | ||
docker container exec -it gateway sh | docker container exec -it gateway sh | ||
Ligne 652: | Ligne 642: | ||
[] | [] | ||
- | 97.2 Test d' | + | 97.2 Test d' |
Le conteneur client répond sur localhost: | Le conteneur client répond sur localhost: | ||
et la requête GET est bien enregistrée sur le logs du conteneur publications-app | et la requête GET est bien enregistrée sur le logs du conteneur publications-app | ||
+ | |||
+ | root@lipn-intranet-dev: | ||
+ | HTTP/1.1 200 OK | ||
+ | Accept-Ranges: | ||
+ | Connection: keep-alive | ||
+ | Content-Length: | ||
+ | Content-Type: | ||
+ | Date: Fri, 26 Jun 2020 16:38:38 GMT | ||
+ | ETag: " | ||
+ | Last-Modified: | ||
+ | Server: nginx/ | ||
+ | |||
+ | < | ||
+ | <html lang=" | ||
+ | |||
+ | < | ||
+ | <meta charset=" | ||
+ | <meta http-equiv=" | ||
+ | <meta name=" | ||
+ | <link rel=" | ||
+ | <link href=" | ||
+ | <link href=" | ||
+ | < | ||
+ | <link href="/ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | continue.</ | ||
+ | </ | ||
+ | <div id=" | ||
+ | <!-- built files will be auto injected --> | ||
+ | <script type=" | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | root@lipn-intranet-dev: | ||
+ | 172.19.0.1 - - [26/ | ||
+ | 172.19.0.1 - - [26/ | ||
+ | |||
+ | |||
+ | |||
98. Authentification | 98. Authentification | ||
Ligne 692: | Ligne 725: | ||
Le //cannot GET// est causé par une configuration dans ''/ | Le //cannot GET// est causé par une configuration dans ''/ | ||
+ | 98.3 tests avec curl depuis le réseau lipn | ||
+ | [garciaflores@merkel ~]$ curl POST 192.168.90.43 | ||
+ | [root@lipn-intranet-dev] $ docker logs authentication-app | ||
+ | 172.19.0.1 - - [26/ | ||
+ | 172.19.0.1 - - [26/ | ||
+ | 98.4 test avec Google chrome depuis http:// | ||
+ | |||
+ | 172.19.0.1 - - [26/ | ||
+ | 172.19.0.1 - - [26/ | ||
+ | 172.19.0.1 - - [26/ | ||
+ | 172.19.0.1 - - [26/ | ||
99. docker-compose ps: liste les containers ainsi que leurs status | 99. docker-compose ps: liste les containers ainsi que leurs status | ||
+ | |||
+ | 100. Nous avons ajouté le fichier vue.config.js dans le client de publication. | ||
+ | |||
+ | 101. On fait un diff entre le fichier axios.js du client d' | ||
+ | Nous avons ajouté un dossier backup pour avoir une copie du fichier axios.js. | ||
+ | Ensuite nous avons modifié le fichier axios.js dans le dossier src du client de publications. | ||
+ | |||
+ | 102. On a modifier la ligne "COPY --from=build-stage /app/dist / | ||
+ | Apres cette modification la page web affiche maintenant " | ||
+ | |||
+ | 103. Jaime nous a aidé à résoudre le problème. Il a reconfiguré le fichier vue.config.js. | ||
+ | Il a également réorganisé le docker-compose. Ce fichier se trouve maintenant dans le dossier intranet. | ||
+ | Nous avons ensuite netoyé les dossiers en supprimant tous les backup et les tests qui ne sont plus utiles. | ||
+ | |||
+ | === TEST MODULE DE PUBLICATION === | ||
+ | |||
+ | == CREATION DE PUBLICATION == | ||
+ | |||
+ | 1. Nous avons essayé de créer une publication, | ||
+ | Requete:\\ | ||
+ | Request URL: | ||
+ | Request Method:POST | ||
+ | Remote Address: | ||
+ | Status Code: 400 | ||
+ | Version: | ||
+ | Referrer Policy: | ||
+ | |||
+ | Data:\\ | ||
+ | <code javascript> | ||
+ | { | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ], | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | </ | ||
+ | Réponse:\\ | ||
+ | <code javascript> | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Notre probleme est le suivant:\\ | ||
+ | Le serveur nous dit que le champ " |