Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
equipes:devteam:petale_docker_deployment [2020/06/26 14:56]
garciaflores créée
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 1: Ligne 1:
 ====Guide pour déployer des images des microservices de la nouvelle intranet Pétale sur les serveurs du LIPN==== ====Guide pour déployer des images des microservices de la nouvelle intranet Pétale sur les serveurs du LIPN====
 +
 +DOCUMENTATION DE L'INSTALL DES MODULES D'AUTHENTIFICATION, PUBLICATIONS ET SALLES DE RÉUNION SUR LIPN-INTRANET-DEV
 +
 +participants: Omar, Jaime, Jorge\\
 +date: 5-8 juin 2020
 +
 +===I. INSTALLATION DU MODULE D'AUTHENTIFICATION D'UTILISATEURS SUR INTRANET-DEV===
 +1. Création d'une image docker pour le module d'AUTHENTIFICATION\\
 +1.1.1 Création du fichier dockerfile Dockerfile /server/Dockerfile\\
 +  λ> docker build --pull --rm -f "server/Dockerfile" -t authentication:latest "server"
 +1.2 lancer l'image docker\\
 +  λ> docker run --rm -it  -p 3000:3000/tcp authentication:latest
 +
 +2. Le serveur écoute sur localhost
 +
 +3. On va rajouter pm2 pour que le serveur soit persistant\\
 +3.1 On édite les fichiers authentification/server package.json et process.json pour rajouter pm2\\
 +3.2 On va récréer et rédemmarer  l'image docker\\
 +  λ> docker build --pull --rm -f "server/Dockerfile" -t authentication-server:latest "server"
 +     [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
 +     [PM2] PM2 Successfully daemonized
 +     [PM2][WARN] Applications authentication_server not running, starting...
 +     [PM2] App [authentication_server] launched (1 instances)
 +
 +^ App name              ^ id ^ version ^ mode ^ pid ^ status ^ restart ^ uptime ^ cpu ^ mem       ^ user ^ watching ^
 +| authentication_server | 0  | 0.0.0   | fork | 45  | online | 0       | 0s     | 0%  | 28.6 MB   | root | enabled  |
 +
 +     Use `pm2 show <id|name>` to get more details about an app
 +     Done in 1.28s.
 +3.3 PM2 a été intégré à l'image\\
 +3.4 On a un problème parce que le containeur s'arrête...\\
 +authentication on  master [!?] took 2s\\
 +  λ> docker ps -a
 +  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
 +%
 +3.5 ON rajoute la ligne sur FROM Dockerfile\\
 +  CMD ["npx", "pm2-runtime", "process.json"]
 +3.6 ON régénère l'image docker\\
 +  λ> docker build --pull --rm -f "server/Dockerfile" -t authentication-server:latest "server"
 +3.6bis (on lance toutes ces commandes depuis authentication/server)\\
 +3.7 on relance\\
 +  λ> docker run --rm -it  -p 3000:3000/tcp authentication-server:latest
 +     2020-06-05T14:19:38: PM2 log: Launching in no daemon mode
 +     2020-06-05T14:19:38: PM2 log: [Watch] Start watching authentication_server
 +     2020-06-05T14:19:38: PM2 log: App [authentication_server:0] starting in -fork mode-
 +     2020-06-05T14:19:38: PM2 log: App [authentication_server:0] online
 +     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.9 Pour sécuriser l'accès au ldap on va d'abord passer les identifiants ldap de michael par ligne de commande\\
 +  λ> docker run --rm -it  -p 3000:3000/tcp -e NODE_ENV=production authentication-server:latest
 +(c'est la variable NOD_ENV qui pemrmet de passer les identifiants)\\
 +3.10 (notamment on a balancer tous les données pour s'authentifier sur des variables d'environement)\\
 +3.11 On fait un commit (`git add Dockerfile`, process.json, ) et push
 +
 +4. On fait lipnssh sur lipn-intranet-dev
 +
 +5. on fait git pull sur le serveur
 +
 +6. on créer l'image docker sur le serveur lipn-intranet-dev
 +  root@lipn-intranet-dev:~/authentication/server# docker build -t authentication-server
 +7. Nous avons installée apache2 sur le serveur et ouvert (avec Xavier) un accès vers http://lipn.univ-paris13.fr/intranet
 +
 +8. On test avec curl si le serveur repond sur le port 3000
 +  λ> curl localhost:3000
 +     curl -d '{"username": "pepito", "password": "peye"}' -H "Content-Type: application/json" 192.168.90.43:3000/login
 +    {"error":{"message":"\"ldap://lipn-ldap-maitre:389\" is an invalid LDAP url (protocol)"}}
 +    garciaflores@villetaneuse:~$
 +
 +8.1 Erreur:
 +  {"error":{"message":"\"ldap://lipn-ldap-maitre:389\" is an invalid LDAP url (protocol)"}}
 +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'authentification dans des fichier des variables d'environnement
 +  root@lipn-intranet-dev:~/authentication# docker-compose  up
 +8.3 La commande CURL marche à partir de lipnssh avec les identifiants de @jaime (pas avec ceux de Jorge ni avec ceux d'Omar)
 +
 +9. C'est très bien, on est authenthifié, mais on doit vérifier que le compte soit soit actif dans le LDAP\\
 +9.1 On modifie la commande LDAP sur server/config/auth.js (ligne 11)
 +
 +10. On assume que le servur marche, pusisqu'il a authenthifié Jaime (mais pas )mar et Jorge: on procède donc à l'instaallation du client
 +
 +11. On procède à refaire notre docker...
 +==client/Dockerfile==
 +12. ON a créer le Dockerfile de sorte qu'on désactive nginx et on active Apache
 +  λ> docker build --pull --rm -f "client/Dockerfile" -t authentication-client:latest "client"
 +12.1 Nous avons un erreur d'installation de python 2 dans la ligne 4 du docker\\
 +12.2 ON n'arrive pas à construire l'image docker... on essaye sur lipn-dev\\
 +12.3 On a finalement compilé l'image client docker
 +
 +13. Dans le root d'authentification on va éditer le fichier docker-compose.yml pour que le service d'authentification soit crée au même temps que le serveur. On ajoute le champs 'restart:always' afin que le service soit toujours actif
 +
 +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)
 +
 +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): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address
 +l'image docker ne lis pas le champ JWT_SECRET de notre .env\\
 +15.1 ON essaye de sortir notre fichier .env de l'image docker\\
 +15.2 on galère avec les guillemets et l'image docker\\
 +15.3 dans le serveur intranet-dev ça marche
 +
 +16. Il faut modifier le proxy pour que lipn.univ-paris13.fr/intranet-dev point sur localhost:8080\\
 +16.1 ON a éditer le fichier /etc/apache2/sites-enabled pour déclarer le proxy
 +  ProxyPass / http://localhost:8080/
 +  ProxyPassReverse / http://localhost:8080/
 +16.2 Maintenant nous avons un problème de ressources (mais la page réponde sur )
 +  http://lipn.univ-paris13.fr/intranet-dev
 +  [lipn.univ-paris13.fr]
 +  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
 +  CMD ["npx", "pm2-runtime", "process.json"]
 +
 +On clone https://depot.lipn.univ-paris13.fr/etamine/plugins/gateway sur la racine de lipn-intranet-dev
 +
 +  [depot.lipn.univ-paris13.fr]
 +  Sign in
 +   - GitLab
 +  LIPN GitLab
 +
 +On va créer le fichier Dockerfile à la racine de gateway
 +
 +    FROM node:lts-alpine
 +    Working directory
 +    WORKDIR /app
 +    Install dependencies
 +    COPY package*.json .
 +    RUN yarn install
 +    Copy files
 +    COPY . .
 +    Listening port
 +    EXPOSE 8080
 +    Default command
 +    CMD ["npx", "pm2-runtime", "process.json"]
 +
 +On attire notre attention sur le fichier gateway.config.yml où son configurés les ports d'écoute de gateway//
 +On configure le fichier docker.compose.yml
 +
 +    version: '3.1'
 +    services:
 +    gateway:
 +    container_name: gateway
 +    restart: always
 +    build: .
 +    ports:
 +        - 8080:8080
 +    environment:
 +        - AUTH_ENDPOINT=http://localhost:3000
 +        - BOOKING_ENDPOINT=http://localhost:3001
 +        - PUBLICATION_ENDPOINT=http://localhost:3002
 +
 +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'authentification
 +  cd /authentification/
 +  docker-compose up
 +Nous avons un erreur parce qu'autant le service d'authentification que le gateway utilisent le port 8080\\
 +On configure les ports sur un ficher .env dans /gateway
 +
 +  GATEWAY_PORT=8000
 +  GATEWAY_HOST=localhost
 +  AUTH_ENDPOINT=http://localhost:3000
 +  BOOKING_ENDPOINT=http://localhost:3001
 +  PUBLICATION_ENDPOINT=http://localhost:3002
 +
 +  root@lipn-intranet-dev:~/gateway# docker-compose up --build
 +
 +MAIS l'erreur persiste (gateway continue à écouter sur le port 8080)
 +On va le ressoudre de la façon suivante:
 +
 +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
 +25.2 et sur le Docker file on expose 8080\\
 +image.png\\
 +Télécharger image.png (51.57 KB)\\
 +
 +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 docker pour l'authentification et pour le gatweays sont lancés et sur le navigateur depuis l'extérieur l'adresse lipn.univ-paris13.fr/intranet-dev réponds...\\
 +Screenshot_20200612_075852.png\\
 +Télécharger Screenshot_20200612_075852.png (283.95 KB)\\
 +
 +On va tester juste le serveur d'authentification à travers gateway
 +
 +et nous avons un erreur Bad request
 +  curl -d '{"username": "pepito", "password":"peye"}' -H "Content-Type: application/json" 192.168.90.43:3000/login
 +  curl -d '{"username": "pepito", "password":"peye"}' -H "Content-Type: application/json" 192.168.90.43:3000/login
 +  Empty reponse from server
 +
 +On essaye de changer le port du gateway à 8081 sur docker-compose.yml
 +
 +  services:
 +    gateway:
 +      container_name: gateway
 +      restart: always
 +      build: .
 +      ports:
 +        - 8081:8080
 +      environment:
 +        - GATEWAY_PORT=8080
 +        - GATEWAY_HOST=localhost
 +        - AUTH_ENDPOINT=http://localhost:3000
 +        - BOOKING_ENDPOINT=http://localhost:3001
 +        - PUBLICATION_ENDPOINT=http://localhost:3002
 +
 +On essaye de mofidier gateway/config/gateway.config.yml pour configurer directement le port 8081
 +Notre problème est que les containeurs docker ne communique pas entre eux (gateway est isolé d'authentication)
 +
 +31.1 On va créer un réseaux virtuel entre containeurs docker
 +  root@lipn-intranet-dev:~# docker network connect my_bridge authentication-api
 +  root@lipn-intranet-dev:~# docker network connect my_bridge authentication-api
 +Jaime ARIAS
 +docker container exec -it gateway sh
 +Jorge GARCIA FLORES a envoyé une image
 +image.png
 +Télécharger image.png (159.54 KB)
 +31.2 Jaime ARIAS vient de se connecter au containeur gateway et de faire un ping vers le containeur authentication-api
 +Jaime ARIAS a envoyé une image
 +image.png
 +Télécharger image.png (38.08 KB)
 +Jorge GARCIA FLORES
 +31.2 Depuis l'interieur du conaieneur gateway on fait un curl vers le containeur authentication-api
 +curl authentication-api:3000
 +Jorge GARCIA FLORES
 +31.3 On va déclarer dans `/gateway/docker-compose.yml' le réseux "backend" pour tous le microservice de Pétale (qui seront tous de conteneurs docker: un par microservice)
 +networks:
 +default:
 +external:
 +name: backend-network
 +et on crée le réseaux à la main
 +root@lipn-intranet-dev:~/gateway# docker network create -d bridge backend-network
 +31.3 Il faut également rajouter le réseau inter conteneur docker backend-network au docker.compose.yml du module d'authentification
 +networks:
 +default:
 +external:
 +name: backend-network
 +image.png
 +Télécharger image.png (79.77 KB)
 +31.4 La commande docker network ls nous permet de voir les réseaux actifs
 +image.png
 +Télécharger image.png (151.96 KB)
 +root@lipn-intranet-dev:~/authentication# docker container exec -it gateway sh nous permet de nous connecter dans gateway pour faire ping sur authentication
 +Jorge GARCIA FLORES
 +31.5.1 gateway écoute sur le port 8081
 +31.5.2 il définit un endpoint d'authentification dans le docker compose
 +AUTH_ENDPOINT=authentication-api:3000
 +31.5.3 dans gateway/config/gateway-config.yml on fait référence au meme endpoint
 +serviceEndpoints:
 +authService:
 +url: '${AUTH_ENDPOINT:-authentication-api:3000}'
 +si on se connecte dans le conteneur gateway et on lance directement le curl envers authentication, il marche
 +Omar KEBLI: on t'entends mal Omar
 +image.png
 +Télécharger image.png (166.05 KB)
 +si on met les adresses ip harcodés dans gateway-config.yml apparemment ça marche
 +Jorge GARCIA FLORES
 +31.6 Ça ne marche pas... on essaye de fusioner les deux composants dans un seul conteneur docker
 +Jorge GARCIA FLORES
 +31.7 Dès ll'intérieur ça marche /app # curl -d '{"username": "pepito", "password":"peye"}' -H "Content-Type: application/json" localhost:8081/login Unauthorized
 +31.8 L'erreur était issu d'une configuration érronée dans le fichier root@lipn-intranet-dev:~/gateway/config/gateway-config.yml
 +sur la ligne 4 de ce fichier, dans la section "http", la valeur était "localhost". Jaime a enlevé ce champ et tout a marché...
 +32. (à partir de la racine du serveur)
 +docker-compose.yml gateway
 +33. ON va maintenant configurer Apache sur le serveur
 +root@lipn-intranet-dev:/etc/apache2/sites-available# vim 000-default.conf
 +34. On teste avec curl
 +curl -d '{"username": "pepito", "password":"peye"}' -H "Content-Ty
 +Unauthorizedroot
 +35. On teste l'authentication avec curl depuis la pasarelle lipnssh
 +wget -O- --post-data='{"username":"arias","password":"peyeroski"}' --header='Content-Type:application/json' 192.168.90.43/login
 +35.1 Il ne marche que sur le compte arias mais pas sur celle de jorge ni d'omar
 +35.2 l'erreur vient du LDAP... le champ accountStatus a la valeur active pour le compte de Jaime et active22 pour celui d'Omar et Jorge
 +36. ON procède à tester le endpoint de login
 +curl -d '{"username": "pepito", "password":"peye"}' -H "Content-Type: application/json" 192.168.90.43/login
 +et ÇA MARCHE!!!
 +{"user":{"dn":"uid=garciaflores,ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"garciaflores","mail":"garciaflores@lipn.univ-paris13.fr","displayName":"Jorge Garcia flores","accountStatus":"active22"},"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkbiI6InVpZD1nYXJjaWFmbG9yZXMsb3U9cGVvcGxlLGRjPXVuaXYtcGFyaXMxMyxkYz1mciIsImNvbnRyb2xzIjpbXSwidWlkIjoiZ2FyY2lhZmxvcmVzIiwibWFpbCI6ImdhcmNpYWZsb3Jlc0BsaXBuLnVuaXYtcGFyaXMxMy5mciIsImRpc3BsYXlOYW1lIjoiSm9yZ2UgR2FyY2lhIGZsb3JlcyIsImFjY291bnRTdGF0dXMiOiJhY3RpdmUyMiIsImlhdCI6MTU5MjQ4NDgwNX0.iWNiq8ff5AfOtFm0sPInYEuuEp4x7jRiRiIVE06EtBU"}
 +37: On décide de deployer deux conteneur docker par microservice: un pour le client et un pour le serveur. Il va nous falloir des stress test pour
 +s'assurer que cette multiplicité de conteneurs docker ne plonge pas la performance...
 +38: ON FAIT L'IMAGE DU CLIENT D'AUTHENTIFICATION!!!
 +39: On va éditer le docker-compose global à la racine de l'application
 +40: Pour la compilation du client (authentication_app) on va paser les variables d'environement dans le build pour qu'elles soit accessibles
 +au moment de la compilation des interfaces client vue en html5
 +41: Sur le fichier /docker-compose on a trois conteneur par le moment (section services):
 +authentication_app
 +authentication_api
 +gateway
 +42: on configure le fichier /etc/apache2/sites-enabled/000-default.conf
 +on configure les endpoints et les ports:
 +/ authentification (port 8080)
 +/api gateway (port 8081)
 +42: ÇA MARCHE DEPUIS L'EXTÉRIEUR (ON A L'ÉCRAN DE LOGIN)
 +43. Erreur: lorsqu'on essaye de s'authentifier, l'onglet réseaux de la console d'inspection du navigateur nous envoie vers
 +localhost://3000
 +43.1 ON va donc éditer le Dockerfile du client our déclarer les nouvelles variables d'environnement /authentification/client/Dockerfile
 +# Add
 +ARG NODE_ENV
 +ENV NODE_ENV $NODE_ENV
 +
 +ARG API_URL
 +ARG APP_BASE_URL
 +43.2 docker-compose -up
 +36. ON procède à tester le endpoint de login
 +curl -d '{"username": "pepito", "password":"peye"}' -H "Content-Type: application/json" 192.168.90.43/login
 +et ÇA MARCHE!!!
 +{"user":{"dn":"uid=garciaflores,ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"garciaflores","mail":"garciaflores@lipn.univ-paris13.fr","displayName":"Jorge Garcia flores","accountStatus":"active22"},"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkbiI6InVpZD1nYXJjaWFmbG9yZXMsb3U9cGVvcGxlLGRjPXVuaXYtcGFyaXMxMyxkYz1mciIsImNvbnRyb2xzIjpbXSwidWlkIjoiZ2FyY2lhZmxvcmVzIiwibWFpbCI6ImdhcmNpYWZsb3Jlc0BsaXBuLnVuaXYtcGFyaXMxMy5mciIsImRpc3BsYXlOYW1lIjoiSm9yZ2UgR2FyY2lhIGZsb3JlcyIsImFjY291bnRTdGF0dXMiOiJhY3RpdmUyMiIsImlhdCI6MTU5MjQ4NDgwNX0.iWNiq8ff5AfOtFm0sPInYEuuEp4x7jRiRiIVE06EtBU"}
 +37: On décide de deployer deux conteneur docker par microservice: un pour le client et un pour le serveur. Il va nous falloir des stress test pour
 +s'assurer que cette multiplicité de conteneurs docker ne plonge pas la performance...
 +38: ON FAIT L'IMAGE DU CLIENT D'AUTHENTIFICATION!!!
 +39: On va éditer le docker-compose global à la racine de l'application
 +40: Pour la compilation du client (authentication_app) on va paser les variables d'environement dans le build pour qu'elles soit accessibles
 +au moment de la compilation des interfaces client vue en html5
 +41: Sur le fichier /docker-compose on a trois conteneur par le moment (section services):
 +authentication_app
 +authentication_api
 +gateway
 +42: on configure le fichier /etc/apache2/sites-enabled/000-default.conf
 +on configure les endpoints et les ports:
 +/ authentification (port 8080)
 +/api gateway (port 8081)
 +42: ÇA MARCHE DEPUIS L'EXTÉRIEUR (ON A L'ÉCRAN DE LOGIN)
 +43. Erreur: lorsqu'on essaye de s'authentifier, l'onglet réseaux de la console d'inspection du navigateur nous envoie vers
 +localhost://3000
 +43.1 ON va donc éditer le Dockerfile du client our déclarer les nouvelles variables d'environnement /authentification/client/Dockerfile
 +# Add
 +ARG NODE_ENV
 +ENV NODE_ENV $NODE_ENV
 +
 +ARG API_URL
 +ARG APP_BASE_URL
 +43.2 docker-compose -up
 +
 +43.4 on fait le ménage sur les conteneurs docker actifs (docker rmi suprime des images dans le filesystem)
 +
 +docker rmi $(docker images | grep none | awk '{print $3;}')
 +
 +43.4 Jaime a effacé les images intermediaires en disque (le docker compose est plus rapide maintenant)
 +
 +
 +43.5: on édite le package.json du client pour enlever les fichers qui ne sont pas nécessaries en production
 +43.6 dans package.json, axios continue de prendre localhost (on galère pour que les différentes bibliothèques du client prennent
 +en compte nos variables d'environnement)
 +44: *************ON VA INSTALLER LE MICROSERVICE DE USER MANAGEMENT*******
 +45: on fait gitclone à partir du git-lab
 +
 +46: On va modifier les variables d'environement de la configuration de user-MANAGEMENT
 +47: On modifie le /docker-compose pour définir la section user-management-api
 +48: docker-compose up --build user-management_api
 +48.1: syntax error (ligne 50)
 +48.2 On utilise la version 3.4 de docker-compose parce qu'elle nous permet de déclarer des variables
 +49. On a corrigé la déclaration des variables pour les adapter à la dernière versin de docker-compose
 +49.1 On a une erreur en essayant de déclarer les variables d'environnement
 +
 +x-ldap-variables: &ldap-variables
 +  environment:
 +    - LDAP_URL=ldap://lipn-ldap-maitre:389
 +    - LDAP_BASE=ou=people,dc=univ-paris13,dc=fr
 +    - LDAP_FILTER=(&(uid={{username}})(accountStatus=active*))
 +    - LDAP_ATTRIBUTES=uid, mail, displayName, accountStatus
 +    - LDAP_ADMIN_USER=cn=admin
 +    - LDAP_ADMIN_PWD=rimichae
 +
 +nouvelle configuration du service authentication_api<<: *ldap-variables
 +environment:
 +    - NODE_ENV=production
 +    - API_PORT=3000
 +50. On remarque que tous les microservices doivent etre configurés sur le ficher de configuration gatwey-config.yml
 +51 maintenant user-management marche!
 +curl localhost:3001/user
 +"controls":[],"uid":"radji","cn":"RADJI WARIS","sn":"RADJI","givenName":"WARIS","mail":"wradji64@gmail.com"},{"dn":"uid=msa, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"msa","cn":"Msa Nodjimba","sn":"Msa","givenName":"Nodjimba","mail":"msa@lipn.univ-paris13.fr"},{"dn":"uid=harang, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"harang","cn":"HARANG Romain","sn":"HARANG","givenName":"Romain","mail":"harang@lipn.univ-paris13.fr"},{"dn":"uid=elhaj-lahsen, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"elhaj-lahsen","cn":"Elhaj-Lahsen Hugo","sn":"Elhaj-Lahsen","givenName":"Hugo","mail":"elhaj-lahsen@lipn.univ-paris13.fr"},{"dn":"uid=quentin.david, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"quentin.david","cn":"DAVID Quentin","sn":"DAVID","givenName":"Quentin","mail":"quentin.david@lipn.univ-paris13.fr"},{"dn":"uid=rousselin, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"rousselin","cn":"Rousselin Pierre","sn":"Rousselin","givenName":"Pierre","mail":"rousselin@math.univ-paris13.fr"},{"dn":"uid=buffiere, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"buffiere","cn":"Buffière Théophile ","sn":"Buffière","givenName":"Théophile ","mail":"buffiere@lipn.univ-paris13.fr"},{"dn":"uid=mittal, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"mittal","cn":"Mittal Aayush","sn":"Mittal","givenName":"Aayush","mail":"aayushmittalaayush@gmail.com"},{"dn":"uid=darya.pchelina, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"darya.pchelina","cn":"Pchelina Darya","sn":"Pchelina","givenName":"Darya","mail":"darya.pchelina@lipn.univ-paris13.fr"},{"dn":"uid=chinaud-chaix, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"chinaud-chaix","cn":"Chinaud-Chaix Clémence","sn":"Chinaud-Chaix","givenName":"Clémence","mail":"chinaud-chaix@lipn.univ-paris13.fr"},{"dn":"uid=gayral, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"gayral","cn":"Gayral Leo","sn":"Gayral","givenName":"Leo","mail":"gayral@lipn.univ-paris13.fr"}]root@lipn-intranet-dev:~#
 +52. On configure le gatewaysur /gateway/config/gateway-config.yml
 +53. On devait déclarer la variable JWT_SECRET dans la config d'authentication
 +53.Problème avec JWT-SECRET
 +WARNING: The KL variable is not set. Defaulting to a blank string.
 +ERROR: Invalid interpolation format for "environment" option in service "authentication_api": "JWT_SECRET=K4$KL)wc6%'Y$6{"
 +53.1 On l'a corrigé en générant une nouvelle variable JWT_SECRET dans /docker-compose
 +54. On a du répéter la déclaratin de variables sur le docker compose pour que ça marche
 +55. Lorsqu'on fait une requête curl avec le token d'authentication , on a une erreur de Bad Gateway
 +56. On peut pas se connecter au port 3001 sur gateway
 +57. Le problème est de perspective... chaque containeur doit communiquer sur son port 3000 et tous les contaneurs doivent communiquer
 +seulement avec le gateway
 +57.1 La seule perspective qu'on a à partir de l'intérieur des conteneurs docker est
 +--mon port 3000
 +--le gateweay qui me me permet de communiquer avec les autres microservices
 +58. curl -H "Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkbiI6InVpZD1hcmlhcywgb3U9cGVvcGxlLGRjPXVuaXYtcGFyaXMxMyxkYz1mciIsImNvbnRyb2xzIjpbXSwidWlkIjoiYXJpYXMiLCJtYWlsIjoiYXJpYXNAbGlwbi51bml2LXBhcmlzMTMuZnIiLCJkaXNwbGF5TmFtZSI6IkphaW1lIEFyaWFzIiwiYWNjb3VudFN0YXR1cyI6ImFjdGl2ZSIsImlhdCI6MTU5MjU3NjE4N30.0UxjmXCVfgnAZzRC8aH9j-ZtoxO7OjHuNg10wsSOnpo"
 +localhost:8081/user
 +58.1 ce curl  passe le token d'authentication et renvoie une liste de tous les utilisateurs
 +:"Desel Jörg","sn":"Desel","givenName":"Jörg","mail":"desel@lipn.univ-paris13.fr"},{"dn":"uid=bennani, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"bennani","cn":"Bennani Mohamed Taha","sn":"Bennani","givenName":"Mohamed Taha","mail":"bennani@lipn.univ-paris13.fr"},{"dn":"uid=floquet, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"floquet","cn":"Floquet Nicolas","sn":"Floquet","givenName":"Nicolas","mail":"floquet@lipn.univ-paris13.fr"},{"dn":"uid=zammit, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"zammit","cn":"ZAMMIT Alban","sn":"ZAMMIT","givenName":"Alban","mail":"zammit@lipn.univ-paris13.fr"},{"dn":"uid=kryukov, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"kryukov","cn":"Kryukov Aleksander","sn":"Kryukov","givenName":"Aleksander","mail":"aleksander.kryukov9@etu.univ-lorraine.fr"},{"dn":"uid=arcaini, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"arcaini","cn":"Arcaini Paolo","sn":"Arcaini","givenName":"Paolo","mail":"arcaini@nii.ac.jp"},{"dn":"uid=gitlab, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"gitlab","cn":"Gitlab LIPN","sn":"Gitlab","givenName":"LIPN","mail":"gitlab@lipn.univ-paris13.fr"},{"dn":"uid=mansour, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"mansour","cn":"Mansour Yanis","sn":"Mansour","givenName":"Yanis","mail":"mansouryanis6@gmail.com"},{"dn":"uid=radji, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"radji","cn":"RADJI WARIS","sn":"RADJI","givenName":"WARIS","mail":"wradji64@gmail.com"},{"dn":"uid=msa, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"msa","cn":"Msa Nodjimba","sn":"Msa","givenName":"Nodjimba","mail":"msa@lipn.univ-paris13.fr"},{"dn":"uid=harang, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"harang","cn":"HARANG Romain","sn":"HARANG","givenName":"Romain","mail":"harang@lipn.univ-paris13.fr"},{"dn":"uid=elhaj-lahsen, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"elhaj-lahsen","cn":"Elhaj-Lahsen Hugo","sn":"Elhaj-Lahsen","givenName":"Hugo","mail":"elhaj-lahsen@lipn.univ-paris13.fr"},{"dn":"uid=quentin.david, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"quentin.david","cn":"DAVID Quentin","sn":"DAVID","givenName":"Quentin","mail":"quentin.david@lipn.univ-paris13.fr"},{"dn":"uid=rousselin, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"rousselin","cn":"Rousselin Pierre","sn":"Rousselin","givenName":"Pierre","mail":"rousselin@math.univ-paris13.fr"},{"dn":"uid=buffiere, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"buffiere","cn":"Buffière Théophile ","sn":"Buffière","givenName":"Théophile ","mail":"buffiere@lipn.univ-paris13.fr"},{"dn":"uid=mittal, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"mittal","cn":"Mittal Aayush","sn":"Mittal","givenName":"Aayush","mail":"aayushmittalaayush@gmail.com"},{"dn":"uid=darya.pchelina, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"darya.pchelina","cn":"Pchelina Darya","sn":"Pchelina","givenName":"Darya","mail":"darya.pchelina@lipn.univ-paris13.fr"},{"dn":"uid=chinaud-chaix, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"chinaud-chaix","cn":"Chinaud-Chaix Clémence","sn":"Chinaud-Chaix","givenName":"Clémence","mail":"chinaud-chaix@lipn.univ-paris13.fr"},{"dn":"uid=gayral, ou=people,dc=univ-paris13,dc=fr","controls":[],"uid":"gayral","cn":"Gayral Leo","sn":"Gayral","givenName":"Leo","mail":"gayral@lipn.univ-paris13.fr"}]root@lipn-intranet-dev:~/gateway/config#
 +59************ON VA CLONER PUBLICATIONS***************+
 +git clone https://depot.lipn.univ-paris13.fr/etamine/plugins/publications.git
 +
 +60. On va faire un dockerfile pour le serveur de publications
 +61. On lance la commande
 +
 +grep -ri "process.env" .
 +
 +pour trouver toutes les variables d'environement utilisé par le microservice
 +
 +variables d'environement pour publications:
 + - NODE_ENV
 + - API_PORT
 + - STORAGE_PATH
 + - DB_NAME
 + - DB_HOST
 + - DB_PORT
 +62. On a modifié le fichier /publications/server/bin/www
 +pour changer PORT par API_PORT
 +63. On rajoute les variables d'environement avec ses valeurs
 +64. On lance
 +$ docker-compose up publications_api
 +65. WARNING: Image for service publications_api was built because it did not already exist. To rebuild this image you must use `docker-comp
 +Creating publications-api ... done
 +Attaching to publications-api
 +publications-api       | 2020-06-19T15:34:22: PM2 log: Launching in no daemon mode
 +publications-api       | 2020-06-19T15:34:23: PM2 log: [Watch] Start watching publications_server
 +publications-api       | 2020-06-19T15:34:23: PM2 log: App [publications_server:0] starting in -fork mode-
 +publications-api       | 2020-06-19T15:34:23: PM2 log: App [publications_server:0] online
 +
 +66. Normalement on peut faire Ctrl-C ici parce que nous avons le message "online"
 +67. MAIS nous n'avons pas mongodb
 +68. On ajoute le service databse dans docker compose
 +69. On relance
 +# docker-compose up publications_api
 +Attaching to publications-api
 +publications-api       | 2020-06-19T15:42:44: PM2 log: Launching in no daemon mode
 +publications-api       | 2020-06-19T15:42:44: PM2 log: [Watch] Start watching publications_server
 +publications-api       | 2020-06-19T15:42:44: PM2 log: App [publications_server:0] starting in -fork mode-
 +publications-api       | 2020-06-19T15:42:44: PM2 log: App [publications_server:0] online
 +publications-api       | 2020-06-19 15:42 +00:00: Mongoose default connection is open to mongodb://database:27017/publications
 +70. on édite le fichier /docker-compose.yml pour configuer le serveur de publications pour qu'il réponde sur http://publications_api:3000
 +71. Quel curl faut-il qu'on consulte pour vérifier que le serveur de publications marche?
 +72: Depuis l'extérieur, pour tester le serveur d'authentication, on se connecte sur 
 +curl -d '{"username": "pepito", "password": "peye"}' -H "Content-Type: application/json" 192.168.90.43:8081/login
 +parce que le port 3000 est configuré sur docker-compose.yml
 +
 +73: pour tester si le serveur de publications marche avec curl je fais la requête suivante:
 +
 +$ curl localhost:8081/publication
 +Unauthorized
 +
 +74. pour reçevoir la liste de publications je dois donner un token
 +
 +curl -H "Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkbiI6InVpZD1hcmlhcywgb3U9cGVvcGxlLGRjPXVuaXYtcGFyaXMxMyxkYz1mciIsImNvbnRyb2xzIjpbXSwidWlkIjoiYXJpYXMiLCJtYWlsIjoiYXJpYXNAbGlwbi51bml2LXBhcmlzMTMuZnIiLCJkaXNwbGF5TmFtZSI6IkphaW1lIEFyaWFzIiwiYWNjb3VudFN0YXR1cyI6ImFjdGl2ZSIsImlhdCI6MTU5MjU3NjE4N30.0UxjmXCVfgnAZzRC8aH9j-ZtoxO7OjHuNg10wsSOnpo" localhost:8081/publication
 +
 +75. Pour experimenter, on teste le navigateur sur
 +https://lipn.univ-paris13.fr/intranet-dev/api/publicationc
 +ou 
 +https://lipn.univ-paris13.fr/intranet-dev/api/hal
 +ou
 +https://lipn.univ-paris13.fr/intranet-dev/api/user
 +et on reçoit la réponse 
 +Unauthorized
 +sur des adresses valables
 +
 +76. curl -H "Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkbiI6InVpZD1nYXJjaWFmbG9yZXMsb3U9cGVvcGxlLGRjPXVuaXYtcGFyaXMxMyxkYz1mciIsImNvbnRyb2xzIjpbXSwidWlkIjoiZ2FyY2lhZmxvcmVzIiwibWFpbC
 +
 +réponse: bad gateway
 +
 +77. docker log publications_api
 +pour voir l'erreur
 +
 +78. Nous avons la même erreur sur intranet-dev... 
 +# curl localhost:8081/publication 
 +Unauthorized
 +
 +
 +79. Ali va faire un teste curl à partir d'un serveur de publications qui tourne sur sa machine
 +
 +$ curl -X GET http://localhost:3000/publication
 +[{"type":"Article","authors":[{"username":"amy","lastName":"Kroker","firstName":"Amy"},{"username":"bender","lastName":"Rodríguez","firstName":"Bender"},{"username":"fry","lastName":"Fry","firstName":"Philip"}],"_id":"5edf61754742b879860cca6d","custom":{"labCategory":"livr","labStatus":"apar","labTime":"ant","labTop":"ving"},"key":"a33667d13d","title":"qw","year":2020,"pages":"12","doi":"12","month":1,"address":"1ww","url":"http://test.test","note":"wef","abstract":"rg","journal":"qw","publisher":"qw","volume":"1","number":"1","created_by":"test_user","modified_by":"test_user","__v":0}]
 +
 +80. Jaime fait un test sans gateway
 +(sur docker-compose.yml il a exposé le port 3000)
 +
 +81. Il faut relancer le gateway
 +# docker-compose down
 +# docker-compose up -d
 +# docker logs gateway
 +# docker logs publications_api
 +
 +82. root@lipn-intranet-dev:~# curl -H "Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkbiI6InVpZD1nYXJjaWFmbG9yZXMsb3U9cGVvcGxlLGRjPXVuaXYtcGFyaXMxMyxkYz1mciIsImNvbnRyb2xzIjpbXSwidWlkIjoiZ2FyY2lhZmxvcmVzIiwibWFpbCI6ImdhcmNpYWZsb3Jlc0BsaXBuLnVuaXYtcGFyaXMxMy5mciIsImRpc3BsYXlOYW1lIjoiSm9yZ2UgR2FyY2lhIGZsb3JlcyIsImFjY291bnRTdGF0dXMiOiJhY3RpdmUyMiIsImlhdCI6MTU5MzA4NzczOH0.HNP1FRsf7ujiy2IAyWXoOKwAJris8qzqxdmObCTfEx4" -X GET localhost:8081/publication
 +[]root@lipn-intranet-dev:~#
 +
 +83. Test réussi! (il fallait faire docker-compose down et docker-compose up pour prendre en compte nos modifs)
 +84. On essaye de voir comment on peut réproduire ce même test avec http, que Jaime vient d'installer
 +
 +http PUT httpbin.org/put X-API-Token:123 name=John
 +
 +85. La commande http suivante donne le même résultat que le curl
 +
 +http GET localhost:8081/publication 'Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkbiI6InVpZD1nYXJjaWFmbG9yZXMsb3U9cGVvcGxlLGRjPXVuaXYtcGFyaXMxMyxkYz1mciIsImNvbnRyb2xzIjpbXSwidWlkIjoiZ2FyY2lhZmxvcmVzIiwibWFpbCI6ImdhcmNpYWZsb3Jlc0BsaXBuLnVuaXYtcGFyaXMxMy5mciIsImRpc3BsYXlOYW1lIjoiSm9yZ2UgR2FyY2lhIGZsb3JlcyIsImFjY291bnRTdGF0dXMiOiJhY3RpdmUyMiIsImlhdCI6MTU5MzA4NzczOH0.HNP1FRsf7ujiy2IAyWXoOKwAJris8qzqxdmObCTfEx4'
 +
 +86. On essaye d'installer le client de publications, donc on va créer un Dockerfile sur /publications/client
 +
 +87. Maintenant on va configurer /docker-compose.yml
 +87.1 Nous avons un doute sur la valeur de la variable d'environement APP_BASE_URL=/intranet-dev
 +Faut-il mettre /intranet-dev/publications ?
 +88. El lancer le build avec docker-compose up -d --build publications_app
 +
 +$ yarn install
 +yarn install v1.22.4
 +[1/4] Resolving packages...
 +[2/4] Fetching packages...
 +info fsevents@1.2.4: The platform "linux" is incompatible with this module.
 +info "fsevents@1.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
 +info fsevents@1.2.9: The platform "linux" is incompatible with this module.
 +info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation.
 +[3/4] Linking dependencies...
 +warning " > babel-core@7.0.0-bridge.0" has unmet peer dependency "@babel/core@^7.0.0-0".
 +warning " > babel-jest@24.9.0" has unmet peer dependency "@babel/core@^7.0.0".
 +warning " > eslint-plugin-vuetify@1.0.0-beta.5" has unmet peer dependency "release-it@*".
 +warning "eslint-plugin-vuetify > eslint-plugin-vue@5.2.3" has incorrect peer dependency "eslint@^5.0.0".
 +warning "eslint-plugin-vuetify > eslint-plugin-vue > vue-eslint-parser@5.0.0" has incorrect peer dependency "eslint@^5.0.0".
 +warning " > sass-loader@8.0.0" has unmet peer dependency "webpack@^4.36.0".
 +[4/4] Building fresh packages...
 +Done in 11.98s.
 +
 +89. Il semblerait que yarn n'arrive pas à importer 
 +
 +# cat Dockerfile 
 +FROM node:lts-alpine as build-stage
 +
 +# Install python 2 (following https://github.com/nodejs/docker-node/issues/384#issuecomment-305208112)
 +RUN apk --no-cache add g++ gcc libgcc libstdc++ linux-headers make python
 +
 +#Working directory
 +WORKDIR /app
 +
 +# Install dependencies
 +COPY package*.json .
 +COPY yarn.lock .
 +
 +RUN yarn add git+ssh://git@depot.lipn.univ-paris13.fr:vuetify-plugins/confirm-dialog.git
 +
 +RUN yarn install
 +
 +90. Nous avons modifié le dockerfile 
 +Nous avons supprimé la ligne : confirm-dialog": "https://depot.lipn.univ-paris13.fr/vuetify-plugins/confirm-dialog.git",
 +On test à nouveau la création du docker client
 +L'ajout du docker client n'a pas réussi il manque la dépendance que nous avons supprimé
 +Nous devons voir pourquoi celle-ci ne passe pas dans le dockerfile
 +
 +91. On continue la galère du confirm-dialog.git
 +error Couldn't find the binary git
 +info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
 +ERROR: Service 'publications_app' failed to build: The command '/bin/sh -c yarn install' returned a non-zero code: 1
 +
 +91.1 On a contourné l'erreur en modifiant /publications/client/Docker 
 +RUN apk --no-cache add g++ gcc libgcc libstdc++ linux-headers make python git
 +
 +92. Nous avons eu un erreur de yarn upgrade
 +Step 14/18 : RUN yarn build
 +---> Running in e462752a99ac
 +yarn run v1.22.4
 +$ vue-cli-service build
 +
 +- Building for production...
 +Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`
 +Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`
 +DONE Compiled successfully in 34331ms4:50:17 PM
 +
 +File Size Gzipped
 +
 +dist/js/chunk-vendors.js 5514.11 KiB 1145.99 KiB
 +dist/js/app.js 685.07 KiB 43.75 KiB
 +
 +Images and other types of assets omitted.
 +
 +DONE Build complete. The dist directory is ready to be deployed.
 +INFO Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html
 +
 +Done in 48.09s.
 +
 +92.1 L'erreur de build a été surmonté en supprimant une ligne du Dockerfile où on effacer le fichier yarn.lock et en relançant
 +docker-compose up -d --build publications_app
 +
 +93. Nous avons un erreur de port
 +Step 18/18 : CMD ["nginx", "-g", "daemon off;"]
 +---> Running in a7566f2a2763
 +Removing intermediate container a7566f2a2763
 +---> aa0edd4edcf0
 +Successfully built aa0edd4edcf0
 +Successfully tagged root_publications_app:latest
 +Creating publications-app ...
 +Creating publications-app ... error
 +
 +ERROR: for publications-app Cannot start service publications_app: driver failed programming external connectivity on endpoint publications-app (4b0e528e91b9b3117fad3fc83dd7917cd0df7822d317da4b32157c4b939bccb9): Bind for 0.0.0.0:8080 failed: port is already allocated
 +
 +ERROR: for publications_app Cannot start service publications_app: driver failed programming external connectivity on endpoint publications-app (4b0e528e91b9b3117fad3fc83dd7917cd0df7822d317da4b32157c4b939bccb9): Bind for 0.0.0.0:8080 failed: port is already allocated
 +ERROR: Encountered errors while bringing up the project.
 +
 +94. Modification de docker-compose.yml situé dans /root
 +Il y avait un conflit sur le port 8080
 +Nous avons remplacé le port 8080 par 8082 au niveau de publications_app
 +
 +95. Modification dans /etc/apache2/sites-enabled/000-default.conf
 +Dans la partie # publication application nous avons modifié le port 8080 en 8082
 +
 +96. Ajout de docker-compose dans publications
 +Contrairement à authentication il n'y avait pas de docker-compose dans publications
 +Nous avons donc ajouté un docker-compose dans publications
 +
 +==97. Publications==
 +
 +root@lipn-intranet-dev:~# docker-compose ps
 +       Name                      Command               State           Ports         
 +-------------------------------------------------------------------------------------
 +authentication-api    docker-entrypoint.sh npx p ...   Up      3000/tcp              
 +authentication-app    nginx -g daemon off;             Up      0.0.0.0:8080->80/tcp  
 +database              docker-entrypoint.sh mongod      Up      27017/tcp             
 +gateway               docker-entrypoint.sh npx p ...   Up      0.0.0.0:8081->8081/tcp
 +publications-api      docker-entrypoint.sh npx p ...   Up      3000/tcp              
 +publications-app      nginx -g daemon off;             Up      0.0.0.0:8082->80/tcp  
 +user_management-api   docker-entrypoint.sh npx p ...   Up      3000/tcp
 +
 +
 +97.1 Test d'accès sur le serveur
 +Le serveur répond sur localhost:8081/publication
 +et la requête GET depuis la ligne de commande avec est enregistrée sur les logs (docker logs publi) du containeur publications-api
 +
 +root@lipn-intranet-dev:~# http GET localhost:8081/publication 'Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkbiI6InVpZD1nYXJjaWFmbG9yZXMsb3U9cGVvcGxlLGRjPXVuaXYtcGFyaXMxMyxkYz1mciIsImNvbnRyb2xzIjpbXSwidWlkIjoiZ2FyY2lhZmxvcmVzIiwibWFpbCI6ImdhcmNpYWZsb3Jlc0BsaXBuLnVuaXYtcGFyaXMxMy5mciIsImRpc3BsYXlOYW1lIjoiSm9yZ2UgR2FyY2lhIGZsb3JlcyIsImFjY291bnRTdGF0dXMiOiJhY3RpdmUyMiIsImlhdCI6MTU5MzE3ODk0N30.gj8z7skaNGF9-dWr3X90oh0xQJNDLsxykfTrW46WAB0'
 +HTTP/1.1 200 OK
 +access-control-allow-origin: *
 +connection: keep-alive
 +content-length: 2
 +content-type: application/json; charset=utf-8
 +date: Fri, 26 Jun 2020 14:26:26 GMT
 +etag: W/"2-l9Fw4VUO7kr8CvBlt4zaMCqXZ0w"
 +x-powered-by: Express
 +
 +La requête est bien enresitrée sur les logs
 +root@lipn-intranet-dev:~# docker logs publications-api
 +2020-06-26T14:19:08: PM2 log: Launching in no daemon mode
 +2020-06-26T14:19:08: PM2 log: [Watch] Start watching publications_server
 +2020-06-26T14:19:08: PM2 log: App [publications_server:0] starting in -fork mode-
 +2020-06-26T14:19:08: PM2 log: App [publications_server:0] online
 +2020-06-26 14:19 +00:00: Mongoose default connection is open to mongodb://database:27017/publications
 +2020-06-26 14:26 +00:00: GET /publication 200 28.260 ms - 2
 +
 +[]
 +
 +97.2 Test d'accès vers le client de publication
 +Le conteneur client répond sur localhost:8082
 +et la requête GET est bien enregistrée sur le logs du conteneur publications-app
 +
 +root@lipn-intranet-dev:~# http localhost:8082
 +HTTP/1.1 200 OK
 +Accept-Ranges: bytes
 +Connection: keep-alive
 +Content-Length: 966
 +Content-Type: text/html
 +Date: Fri, 26 Jun 2020 16:38:38 GMT
 +ETag: "5ef5f834-3c6"
 +Last-Modified: Fri, 26 Jun 2020 13:29:24 GMT
 +Server: nginx/1.18.0
 +
 +<!DOCTYPE html>
 +<html lang="en">
 +
 +<head>
 +  <meta charset="utf-8">
 +  <meta http-equiv="X-UA-Compatible" content="IE=edge">
 +  <meta name="viewport" content="width=device-width,initial-scale=1.0">
 +  <link rel="icon" href="/favicon.ico">
 +  <link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
 +  <link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
 +  <title>Etamine v5</title>
 +<link href="/js/app.js" rel="preload" as="script"><link href="/js/chunk-vendors.js" rel="preload" as="script"></head>
 +
 +<body>
 +  <noscript>
 +    <strong>We're sorry but client doesn't work properly without JavaScript enabled. Please enable it to
 +      continue.</strong>
 +  </noscript>
 +  <div id="app"></div>
 +  <!-- built files will be auto injected -->
 +<script type="text/javascript" src="/js/chunk-vendors.js"></script><script type="text/javascript" src="/js/app.js"></script></body>
 +
 +</html>
 +
 +
 +root@lipn-intranet-dev:~# docker logs publications-app
 +172.19.0.1 - - [26/Jun/2020:16:17:19 +0000] "GET / HTTP/1.1" 200 966 "-" "HTTPie/0.9.8" "-"
 +172.19.0.1 - - [26/Jun/2020:16:18:44 +0000] "GET / HTTP/1.1" 200 966 "-" "HTTPie/0.9.8" "-"
 +
 +
 +
 +
 +98. Authentification
 +98.1 Test d'accès à authentication-api depuis le serveur intranet-dev
 +
 +$ http localhost
 +$  docker logs authentication-app
 +x86_64; rv:77.0) Gecko/20100101 Firefox/77.0" "200.57.193.75, 192.168.90.15"
 +172.19.0.1 - - [26/Jun/2020:15:11:56 +0000] "GET /favicon.ico HTTP/1.1" 200 1150 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0" "200.57.193.75, 192.168.90.15"
 +172.19.0.1 - - [26/Jun/2020:15:15:11 +0000] "GET / HTTP/1.1" 200 654 "-" "HTTPie/0.9.8" "::1"
 +172.19.0.1 - - [26/Jun/2020:15:16:37 +0000] "GET / HTTP/1.1" 200 654 "-" "HTTPie/0.9.8" "::1"
 +
 +(sur authentication-api il n'y a rien puisque la demande n'est parvenue au serveur)
 +
 +98.2 Test de login à authentication-api depuis le serveur intranet-dev
 +
 +root@lipn-intranet-dev:~# http localhost:8081/login 
 +HTTP/1.1 404 Not Found
 +Connection: keep-alive
 +Content-Length: 144
 +Content-Security-Policy: default-src 'none'
 +Content-Type: text/html; charset=utf-8
 +Date: Fri, 26 Jun 2020 15:43:54 GMT
 +X-Content-Type-Options: nosniff
 +
 +<!DOCTYPE html>
 +<html lang="en">
 +<head>
 +<meta charset="utf-8">
 +<title>Error</title>
 +</head>
 +<body>
 +<pre>Cannot GET /login</pre>
 +</body>
 +</html>
 +
 +Le //cannot GET// est causé par une configuration dans ''/root/gateway/config/gateway-config.yml''
 +
 +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/Jun/2020:15:59:03 +0000] "GET / HTTP/1.1" 200 654 "-" "curl/7.52.1" "10.10.0.185"
 +172.19.0.1 - - [26/Jun/2020:16:01:16 +0000] "GET / HTTP/1.1" 200 654 "-" "curl/7.52.1" "10.10.0.185"
 +
 +98.4 test avec Google chrome depuis http://lipn.univ-paris13.fr/intranet-dev en cliquant sur la touche LOGIN
 +
 +172.19.0.1 - - [26/Jun/2020:16:08:26 +0000] "GET / HTTP/1.1" 200 654 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36" "200.57.193.75, 192.168.90.15"
 +172.19.0.1 - - [26/Jun/2020:16:08:27 +0000] "GET /app.js HTTP/1.1" 200 5181766 "https://lipn.univ-paris13.fr/intranet-dev/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36" "200.57.193.75, 192.168.90.15"
 +172.19.0.1 - - [26/Jun/2020:16:08:37 +0000] "GET /favicon.ico HTTP/1.1" 200 1150 "https://lipn.univ-paris13.fr/intranet-dev/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36" "200.57.193.75, 192.168.90.15"
 +172.19.0.1 - - [26/Jun/2020:16:08:54 +0000] "GET /fonts/MaterialIcons-Regular.bca3a187.woff2 HTTP/1.1" 200 59000 "https://lipn.univ-paris13.fr/intranet-dev/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36" "200.57.193.75, 192.168.90.15"
 +
 +
 +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'authentication et le fichier axios.js du client de publication
 +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 /usr/share/nginx/html/" par "COPY --from=build-stage /app/dist /usr/share/nginx/html/publication".
 +Apres cette modification la page web affiche maintenant "Welcome to nginx" mais toujours pas la page de publication
 +
 +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, mais le systeme nous retourne une erreur:\\
 +Requete:\\
 +  Request URL:https://lipn.univ-paris13.fr/intranet-dev/api/publication
 +  Request Method:POST
 +  Remote Address:194.254.163.36:443
 +  Status Code: 400
 +  Version:HTTP/1.1
 +  Referrer Policy:no-referrer-when-downgrade
 +
 +Data:\\
 +<code javascript>
 +  {
 +    "custom":
 +    {
 +      "labCategory": "livr",
 +      "labStatus": "apar",
 +      "labTime": "ant",
 +      "labTop": "ving"
 +    },
 +    "authors":[
 +      {
 +        "lastName": "Arias",
 +        "firstName": "Jaime"
 +      },
 +      {
 +        "lastName": "Garcia Flores",
 +        "firstName": "Jorge"
 +      }
 +    ],
 +    "key": "45767c5294",
 +    "title": "Test",
 +    "year": 2020,
 +    "type": "Unpublished",
 +    "pages": "123",
 +    "doi": "test",
 +    "month": "11",
 +    "address": "5 rue",
 +    "url": "http://test.test",
 +    "note": "test",
 +    "abstract": "test",
 +    "created_by": "test_user",
 +    "modified_by": "test_user"
 +  }
 +</code>
 +Réponse:\\
 +<code javascript>
 +  {
 +    "error":{
 +      "message": "\"user\" is not allowed"
 +    }
 +  }
 +</code>
 +
 +Notre probleme est le suivant:\\
 +Le serveur nous dit que le champ "user" n'est pas autorisé alors que nous ne fournissions pas cette donnée.
  • Dernière modification: il y a 4 ans