Eywek / tgvmax-bot

26 stars 6 forks source link

Erreur : Network was not response lors ajout d'un trajet #9

Closed Simats13 closed 2 years ago

Simats13 commented 2 years ago

Salut,

J'ai essayé de faire marcher les deux conteneurs (Backend et Frontend) sur mon Mac Mini M1. Cependant il faut croire que les deux conteneurs n'ont pas l'air de communiquer entre eux. J'ai essayé d'exposer le 8080 pour le conteneur backend mais ça n'a pas l'air de fonctionner.

On dirait qu'il n'arrive pas à récupérer un fichier sur le front ou call l'API sur le back, je ne sais pas.

Voici les logs du conteneur Front :

172.17.0.1 - - [21/Mar/2022:18:06:46 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36" "-"

2022/03/21 18:06:46 [error] 60#60: *2 open() "/usr/share/nginx/html/api/travels" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /api/travels HTTP/1.1", host: "localhost", referrer: "http://localhost/"

172.17.0.1 - - [21/Mar/2022:18:06:46 +0000] "GET /api/travels HTTP/1.1" 404 555 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36" "-"

2022/03/21 18:06:48 [error] 60#60: *2 open() "/usr/share/nginx/html/api/stations/autocomplete" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /api/stations/autocomplete?searchTerm=P HTTP/1.1", host: "localhost", referrer: "http://localhost/"

172.17.0.1 - - [21/Mar/2022:18:06:48 +0000] "GET /api/stations/autocomplete?searchTerm=P HTTP/1.1" 404 555 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36" "-"

2022/03/21 18:06:49 [error] 60#60: *2 open() "/usr/share/nginx/html/api/stations/autocomplete" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /api/stations/autocomplete?searchTerm=Par HTTP/1.1", host: "localhost", referrer: "http://localhost/"

172.17.0.1 - - [21/Mar/2022:18:06:49 +0000] "GET /api/stations/autocomplete?searchTerm=Par HTTP/1.1" 404 555 "http://localhost/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36" "-"

Voici quelques screens des erreurs et de l'environnement en question :

Capture d’écran 2022-03-21 à 23 32 18 Capture d’écran 2022-03-21 à 23 30 41

Je vous remercie d'avance.

Eywek commented 2 years ago

Hello,

Alors c'est tout simplement parce que le front s'attends a avoir l'API de disponible sur le /api https://github.com/Eywek/tgvmax-bot/blob/9ad9ed6d6aca0b98b045a75f4c6420c1f9817af4/frontend/config/prod.env.js#L4

Du coup si ton front est dispo sur https://tgvmax.example.com, l'API devrait être dispo sur https://tgvmax.example.com/api.

Libre à toi de modifier la config du frontend et de rebuild l'image docker pour changer l'URL de l'API, ou alors de configurer un reverse proxy (genre nginx) devant.


Perso je lance les containers comme ça:

docker run -d --name tgvmax-frontend -p 8081:80 ghcr.io/eywek/tgvmax-bot-frontend:9ad9ed6d6aca0b98b045a75f4c6420c1f9817af4
docker run -d --restart=on-failure --name tgvmax-backend -p 8080:8080 -v /home/eywek/docker/tgvmax/tgvmax.sqlite:/usr/src/tgvmax.sqlite ghcr.io/eywek/tgvmax-bot-backend:9ad9ed6d6aca0b98b045a75f4c6420c1f9817af4

Et j'ai un nginx configuré comme ceci:

upstream frontend {
    server 127.0.0.1:8081;
}

upstream backend {
    server 127.0.0.1:8080;
}

server {
    server_name mydomain.fr;

    location / {
        include proxy_params;
        proxy_pass http://frontend;
    }
    location /api {
        include proxy_params;
        proxy_pass http://backend;
    }
}
Simats13 commented 2 years ago

Super j'ai réussi à le faire fonctionner cependant j'ai une petite question à te poser et j'ai eu une erreur encore. Tout d'abord je vois que tu donnes comme volume un fichier sqlite qui correspond à une bdd mais est-ce nécessaire pour le bon fonctionnement ?

Et ensuite voici mon erreur :

 FetchError: invalid json response body at https://www.sncf-connect.com/?currency=EUR&onlyDirectTrains=false reason: Unexpected token < in JSON at position 0

    at /usr/src/node_modules/node-fetch/lib/index.js:272:32

    at processTicksAndRejections (node:internal/process/task_queues:96:5)

    at OuiSNCFBooker.check (/usr/src/src/book/ouisncf.ts:51:34)

Peut-être c'est parce que je ne lui fournis pas de BDD ? Si je dois lui en fournir une il y a des tables en particulier à respecter, un format, etc... ?

Eywek commented 2 years ago

Tout d'abord je vois que tu donnes comme volume un fichier sqlite qui correspond à une bdd mais est-ce nécessaire pour le bon fonctionnement ?

J'utilise un volume pour garder la db quand j'update l'image. Je pense que le fichier de sqllite devrait se créer tout seul sans soucis, pas besoin de fournir quoique ce soit.


Pour ton erreur je pense que du coup le booker de sncf ne doit pas fonctionner (depuis la migration de oui.sncf vers sncf-connect), je te conseil donc d'utiliser l'implémentation de Trainline, faut juste se créer un compte business (c'est grauit, ca permet l'accès à leur API).