Closed cguertin14 closed 5 years ago
Je crois avoir résolu les conflits de merge. Je vais tester bientôt pour voir si tout est fonctionnel après la résolution de conflits. En attendant, si quelqu'un peut valider que j'ai rien retirer lors de la résolution de conflits, ça serait :+1: :100: :)
Nicolas semblait déjà avoir tout corrigé.
Je pense qu'on devrait delete "frontend-web-v2/public/img/jardiniot_explanations.jpg" parce que je pense pas que ça de quoi à faire là. Ça devrait être dans le wiki à la limite.
Je peux pas tester. docker-compose.yml
demande la version 3.7, ma version de docker supporte juste 3.5.
Pour ma pars, j'ai du changé un peu le network dans le fichier docker-compose.yml
pour que les ports soient accessibles sur ma machine. Par contre, le front-end affiche une page blanche sur le port 8080...
@AXDOOMER : As-tu essayé de mettre ta version de docker à jour? :wink:
@notarock Oui, mais OpenSuse a pas plus à jour.
ax@linux-l7l0:~> docker-compose -version docker-compose version 1.17.0, build unknown
[notarock@t480 ~]$ docker-compose --version
docker-compose version 1.23.2, build unknown
[notarock@t480 ~]$ docker --version
Docker version 18.09.2-ce, build 62479626f2
Je crois que ce script permet d'installer une version plus récente : https://get.docker.com/ . Pour docker-compose, je ne sais pas ou tu pourrais trouver une version plus récente :thinking:
[notarock@t480 ~]$ docker-compose --version docker-compose version 1.23.2, build unknown [notarock@t480 ~]$ docker --version Docker version 18.09.2-ce, build 62479626f2
Je crois que ce script permet d'installer une version plus récente : https://get.docker.com/ . Pour docker-compose, je ne sais pas ou tu pourrais trouver une version plus récente thinking
Il y ce script qui fonctionne parfaitement pour installer docker compose https://docs.docker.com/compose/install/
En plus, je pense que tu peux le rouler si tu fais juste changer la version dans le docker-compose.yml
a 3.5
@jalilbengoufa Y'a des trucs indéfinis comme le truc pour le réseau. Je pense que ça va le fucker.
De mémoire, la section sur le networks
peut être retirée en-bas et dans les services
, cependant je ne me souviens plus quelle fonctionnalité de la version 3.7 du compose file est utilisée.
Je verrai demain si je peux descendre la version de docker-compose requise pour le projet.
Avec le network host
, loption Port
ne sert plus a rien. Je ne suis pas sur si EXPOSE
est utile dans notre contexte.
Pour ma [part], j'ai du changé un peu le network dans le fichier docker-compose.yml pour que les ports soient accessibles sur ma machine
Oui, il y a des avantages et des inconvénients à avoir un network privé dans un docker-compose.
le front-end affiche une page blanche sur le port 8080
Le frontend bind au port 4000 sur l'hôte alors je suis surpris que tu aies quoi que ce soit qui s'affiche dans ton fureteur.
À relire le docker-compose.yml
, je me suis souvenu que le network_mode
était là pour déboguer quelque chose. Le tout fonctionne, mais ça m'embête alors je vais revoir ça.
J'ai ajouté le network_mode
car c'était une façon d'avoir les ports relier à l'hôte facilement. :
https://github.com/ClubCedille/jardiniot/pull/78/commits/9a0ac72116e7fc4d81104db0097108483661b63e
Generalement (par defaut) on choisir les ports a exposer avec loption Port
sans toucher au network. Tu peux exposer tous les ports avec Port
.
@notarock ce que tu as fait cest legit cest sur. Si tu veux faire un setup compatible k8s (ce qui nest peutetre pas le cas), il faut que tes ip/ports soient dynamiquement configurable par variable denv. En effet, cest plus fancy qu'avoir des ips/ports statiques/locals; ce n'est peut-etre pas ce que tu veux.
Tout ce qu'il manque à ce point c'est de trouver une alternative pour servir les fichiers statiques permettant aussi de proxy l'API. Alternativement, on peut aussi ajouter des headers de CORS pour permettre les call à l'API au dockerfile du frontend.
Je préfère la première solution car il ne serait plus nécessaire de hardcoder le port de l'API dans le frontend et ça permettrait d'abstraire le fonctionnement et la configuration du backend.
J'ai pas été capable de le rouler
sudo docker-compose up
/bin/sh: /tmp/_MEI5i6xIB/libreadline.so.7: no version information available (required by /bin/sh)
WARNING: Some networks were defined but are not used by any service: jardiniot
Starting jardiniot-mqtt ... done
Starting jardiniot-api ... done
Starting jardiniot-web ... done
Attaching to jardiniot-mqtt, jardiniot-api, jardiniot-web
jardiniot-mqtt | 1555372303: mosquitto version 1.4.15 (build date Sat, 07 Apr 2018 11:13:41 +0100) starting
jardiniot-mqtt | 1555372303: Config loaded from /mqtt/config/mosquitto.conf.
jardiniot-mqtt | 1555372303: Opening websockets listen socket on port 9001.
jardiniot-mqtt | 1555372303: Opening ipv4 listen socket on port 1883.
jardiniot-mqtt | 1555372303: Opening ipv6 listen socket on port 1883.
jardiniot-api | Traceback (most recent call last):
jardiniot-api | File "/app/mqtt/fakejardin.py", line 50, in <module>
jardiniot-api | client.connect("mqtt", 1883, 30)
jardiniot-api | File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 839, in connect
jardiniot-api | return self.reconnect()
jardiniot-api | File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 962, in reconnect
jardiniot-api | sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
jardiniot-api | File "/usr/local/lib/python3.7/socket.py", line 707, in create_connection
jardiniot-api | for res in getaddrinfo(host, port, 0, SOCK_STREAM):
jardiniot-api | File "/usr/local/lib/python3.7/socket.py", line 748, in getaddrinfo
jardiniot-api | for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
jardiniot-api | socket.gaierror: [Errno -3] Temporary failure in name resolution
jardiniot-web | 2019/04/15 23:51:45 Listening at 0.0.0.0:8080 /...
jardiniot-api | Traceback (most recent call last):
jardiniot-api | File "/app/mqtt/mqttmain.py", line 121, in <module>
jardiniot-api | main()
jardiniot-api | File "/app/mqtt/mqttmain.py", line 38, in main
jardiniot-api | client.connect("mqtt", 1883, 30)
jardiniot-api | File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 839, in connect
jardiniot-api | return self.reconnect()
jardiniot-api | File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 962, in reconnect
jardiniot-api | sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
jardiniot-api | File "/usr/local/lib/python3.7/socket.py", line 707, in create_connection
jardiniot-api | for res in getaddrinfo(host, port, 0, SOCK_STREAM):
jardiniot-api | File "/usr/local/lib/python3.7/socket.py", line 748, in getaddrinfo
jardiniot-api | for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
jardiniot-api | socket.gaierror: [Errno -3] Temporary failure in name resolution
jardiniot-api exited with code 1
jardiniot-api exited with code 1
jardiniot-api exited with code 1
jardiniot-api exited with code 1
jardiniot-api exited with code 1
^CGracefully stopping... (press Ctrl+C again to force)
Stopping jardiniot-web ... done
Stopping jardiniot-api ... done
Stopping jardiniot-mqtt ... done
docker --version Docker version 18.09.3, build 774a1f4eee66
docker-compose --version docker-compose version 1.24.0, build 0aa59064
Est-ce que tout etait bien connecte quand tu as tester ? @AXDOOMER
Pas besoin de connecter de quoi. Normalement, il démarre mosquitto à l'intérieur du conteur et mosquitto est connexion less, donc il dépend pas d'une connexion pour pouvoir fonctionner correctement.
Ça marche, le site web est accessible sur http://127.0.0.1:8080/
@AXDOOMER Qu'est-ce qu'il manque à ce point?
Restaurer APIv1 dedans car c'est pas supposé être enlevé par ce pull request. Faut aussi documenter comment lancer ça et par défaut sur quel port c'est accessible pour pas que le monde qui connaissent pas trop docker cherchent trop.
Genre: roule telle commande docker comme ça après avoir parti le service comme ça (sur la plus part des ordis, le service roule pas par défaut), et après tu peux y accéder à 127.#.#.#:1234.
En rédigeant la documentation, j'ai remarqué qu'il n'y avait pas de moyen de rouler le site Web en "production" en dehors de Docker Compose.
Par conséquent, je vais ajouter un serveur Express minimal pour servir le build du frontend et forwarder les requêtes à l'API (ce qui règle aussi le problème du port d'API hardcodé dans le frontend).
Je comprends pas pourquoi ça jamais marché pour Nicolas et moi.
@AXDOOMER Je pourrais me liberer et voir ce qu'on peut faire.
Je comprends pas pourquoi ça jamais marché pour Nicolas et moi.
Peut-être que vous n'êtes pas fait l'un pour l'autre?
Je test ça live avec Roch
Ça marche. Testé sur Xubuntu.
Comment reproduire:
sudo apt install docker
Installer docker-compose: https://docs.docker.com/compose/install/
clone le projet
aller dans sa racine
faire: sudo docker-compose up (le service doit avoir été démarré (sudo systemctl start docker)
Attendre longtemps pour les downloads au premier déploiement (3 minutes environ)
Accéder au site avec : localhost:8080/
🎉🎉🎉