UUID: | 68c6b9a36f973c82773ffab17c67bf077cf097a2 | |||
Title/Titre: | [FR] Grammalecte dans un container docker | |||
Status: | Closed | Type: | Installation | |
Severity/Gravité: | Severe | Priority/Priorité: | Immediate | |
Module: | Grammalecte_Core | Resolution: | Fixed | |
Modified/Modifié: | 2020-10-10 06:56:25 | |||
Version(s): | 1.12.1 | |||
Comments / Commentaires : | ||||
thelittlefireman // 2020-10-06 12:06:20 :
Bonjour, J'essaie de créer un conteneur docker pour lancer Grammalecte en docker mais lorsque je démarre le serveur, celui-ci reste bloqué (attend un appui sur la touche entrée ???) et ne se lance que lorsque je quitte le docker. Le serveur ne semble pas lancé, j'ai testé un curl http://localhost:8080/ mais j'obtiens une erreur "connection reset" Créer le conteneur : docker build -t grammalecte:latest . Démarrer le conteneur : docker run --rm -p 8080:8080 --name gr grammalecte:latest Dockerfile ``` FROM python:3-alpine AS src ENV VERSION 1.12.2 RUN apk add --update --no-cache \ unzip \ wget \ && wget http://www.dicollecte.org/grammalecte/zip/Grammalecte-fr-v${VERSION}.zip \ && unzip Grammalecte-fr-v${VERSION}.zip -d /srv FROM python:3-alpine COPY --from=src /srv/ /srv EXPOSE 8080 CMD python /srv/grammalecte-server.py -p 8080 -t -mp 1 ``` olr // 2020-10-06 14:45:00 : Bonjour, Je ne connais Docker que de nom. Ce que je vais vous dire n’est donc que suppositions. Attendu que le serveur utilise un ProcessPoolExecutor, même avec un seul processus dédié à la tâche du correcteur grammatical, j’imagine qu’il y a peut-être un réglage à effectuer pour le processus dédié. L’autre possibilité, c’est que le serveur Bottle.py (https://bottlepy.org/docs/dev/) sur lequel se base Grammalecte a besoin (lui aussi) d’un configuration particulière. À mon avis, c’est de l’un de ces points, voire des deux, que vient le problème. olr // 2020-10-06 14:50:43 : Par ailleurs, l’adresse http://www.dicollecte.org/ est obsolète, utilisez https://grammalecte.net thelittlefireman // 2020-10-07 16:59:55 : Merci pour vos retours. J'ai réussi à le faire tourner correctement. Il faut ajouter l'argument "ENV PYTHONUNBUFFERED TRUE" pour éviter que les logs soient stocké dans un buffer et bloque le programme python. Donc pour info, vous pouvez ajouter ces informations dans votre répo : Dockerfile: ``` FROM python:3-alpine AS src ENV VERSION 1.12.2 RUN apk add --update --no-cache \ unzip \ wget \ && wget https://grammalecte.net/grammalecte/zip/Grammalecte-fr-v${VERSION}.zip \ && unzip Grammalecte-fr-v${VERSION}.zip -d /srv FROM python:3-alpine COPY --from=src /srv/ /srv ENV PYTHONUNBUFFERED TRUE EXPOSE 8080 WORKDIR /srv ENTRYPOINT ["python3"] CMD ["grammalecte-server.py","-ht", "0.0.0.0","-p","8080","-t"] ``` Créer le conteneur : `docker build -t grammalecte:latest .` Lancer le conteneur : `docker run --rm -p 8080:8080 --name gr grammalecte:latest` thelittlefireman // 2020-10-07 17:07:49 : Pour info : https://github.com/thelittlefireman/docker-grammalecte https://hub.docker.com/r/thelittlefireman/docker-grammalecte olr // 2020-10-08 13:30:14 : Merci. J’ai ajouté votre fichier au dépôt. thelittlefireman // 2020-10-09 13:43:57 : merci :) Vous devriez juste renommer votre fichier "Dockerfile.txt" en "Dockerfile" le nom est important pour la compilation rapide du conteneur. Vous pouvez également (si vous le souhaitez) ajouter une routine pour créer le conteneur automatiquement et le distribuer sur https://hub.docker.com/ thelittlefireman // 2020-10-09 13:45:04 : * "dockerfile.txt" ==> "Dockerfile" olr // 2020-10-10 06:56:00 : “dockerfile.txt” will become “Dockerfile” in the downloadable Grammalecte package. |