jancelin / docker-lizmap

docker lizmap
GNU Affero General Public License v3.0
27 stars 21 forks source link

Containeur se lance mais impossible de se connecter #44

Closed Doctor-Who closed 6 years ago

Doctor-Who commented 6 years ago

Bonjour,

Contenu du fichier docker-compose.yml :

version: '3.4'
services:

  lizmap:
    image: jancelin/docker-lizmap:latest
    restart: always
    ports:
     - 80:80
     - 443:443
    volumes:
     - /srv/data/lizmap_project:/home
     - /srv/data/lizmap_var:/var/www/websig/lizmap/var
     - /srv/data/tmp:/tmp
    links:
     - qgiserver:qgiserver

  qgiserver:
    image: jancelin/qgis-server:2.18-wfsOutputExtension
    restart: always
    volumes:
      - /srv/data/lizmap_project:/home
    expose:
      - 80

J'accède bien à la page d'accueil (vide) de lizmap Connexion à l'admin impossible avec id : admin / pass : admin Aucun message d'erreur, rien, la page se recharge mais rien ne se passe et je ne suis pas connecté (testé avec firefox, chromium en mode normal et navigation privée juste au cas où) J'ai essayé de saisir un autre utilisateur au hasard : lizmap me répond bien que l'authentification est incorrecte

Au cas où ce serait du à ma distribution exotique, j'ai réessayé en commentant l'ensemble des volumes pour écarter tout problème de droits et ne fonctionner qu'avec des données interne (même si un chown -R 33:33 /srv/data/lizmap_project /srv/data/lizmap_var /srv/data/tmp est censé résoudre le problème)

Quand j'entre en commande dans le container (via portainer par ex), je parcours bien depuis le containeur les projets et fichiers QGIS ajouté depuis mon hôte openSUSE mais lizmap ne voit rien hélas (ni projet, pas de login possible)

J'espère que ces infos complètes vous permettrons de me filer un coup de main :)

jancelin commented 6 years ago

Salut, Essaye la version 3.1.6 de Lizmap, la latest c'est la master. jancelin/docker-lizmap:3.1.6

Je suis en Thaïlande, ça va être dur de debuger plus....

Doctor-Who commented 6 years ago

Salut Julien,

Pas de problème, je peux attendre ton retour. Idem avec la version 3.1.6 ... je ne comprends vraiment pas ce qui peut clocher ... J'ai chowner en récursif mes répertoires en 33:33

kikislater commented 6 years ago

Salut Nicolas,

Un : docker ps -a donne quoi ? Je penses qu'un docker images serait utile aussi

Doctor-Who commented 6 years ago

Salut Sylvain :) Content de te voir ici, ça donne ça

CONTAINER ID        IMAGE                                          COMMAND                  CREATED             STATUS              PORTS                                      NAMES
cc198da84301        jancelin/docker-lizmap:3.1.6                   "/bin/sh -c /start.sh"   4 hours ago         Up 4 hours          0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   data_lizmap_1
33b62e5157af        jancelin/qgis-server:2.18-wfsOutputExtension   "/bin/sh -c /start.sh"   4 hours ago         Up 4 hours          80/tcp                                     data_qgiserver_1
3ab13e0674d0        portainer/portainer                            "/portainer"             29 hours ago        Up 28 hours         0.0.0.0:9000->9000/tcp                     orchestration_01
REPOSITORY               TAG                       IMAGE ID            CREATED             SIZE
jancelin/qgis-server     2.18-wfsOutputExtension   cd0a2bb2fe73        6 days ago          989MB
jancelin/docker-lizmap   3.1.6                     1a1970f27897        6 days ago          333MB
traefik                  latest                    1f4f407e37eb        2 weeks ago         49.5MB
portainer/portainer      latest                    7120867536bd        3 weeks ago         33.9MB
kikislater commented 6 years ago

Tu peux regarder les logs de chaque container avec ça docker logs CONTAINER_ID

Mais je regarderais plus le log lizmap situé dans ton lizmap var soit pour toi /srv/data/lizmap_var/logs.db Pour la lecture c'est du sqlite : https://docs.3liz.com/fr/admin/logs.html

Perso je penches plus pour un problème de droits

Doctor-Who commented 6 years ago

Le dossier est vide, je n'ai pas de base logs.db

kikislater commented 6 years ago

Problème de droits donc ! Essaye de modifier les droits avant la création des containers. Il me semble que j'ai déjà eu le problème mais je ne me rappelle plus ce que j'avais pour résoudre à part supprimer mes containers et les recréer mais sans docker compose dans mon cas.

Doctor-Who commented 6 years ago

Le hic c'est que même avec mes dossiers en 33:33 quand je lance la création des dockers, il me rebascule l'ensemble des sous dossiers en root.

kikislater commented 6 years ago

Même dans un répertoire /home/$USER ?

jancelin commented 6 years ago

Essaye

docker exec -it containername bash

Et

chown www-data:www-data -R /home

jancelin commented 6 years ago

Quand on fait un chown dans un container soit on le fait de l'extérieur avec le PID soit à l'intérieur, docker exec, avec l'utilisateur de la distribution, ici debian.

jancelin commented 6 years ago

img_20180215_174243 envoyé depuis Phuket, je pouvais pas résister....

Doctor-Who commented 6 years ago

Salut,

Merci d'avoir pris le temps sur tes vacances de me débloquer. Hélas cela ne fonctionne toujours pas, c'est vraiment étrange. Même en lançant le docker compose depuis un utilisateur dans le groupe docker il me créé les sous répertoire en root ???!!! Même en rechmodant derrière depuis le containeur, cela ne fonctionne toujours pas... Je dois passer à coté de quelque chose ...

PS : désolé pas eu une minute pour faire le suivi avant cela

kikislater commented 6 years ago

Salut, C'est dans quel répertoire ? Dans un répertoire du /home/$USER il refait la même chose. Il y a une sécurité linux sûrement depuis longtemps mais actif depuis peu qui rebascule automatiquement les droits sur root ou responsable du paquet ta distribution. Du moins j'ai ça sur Manjaro/Archlinux, c'est pour ça que je demandes sur le répertoire du $USER. Le système de fichier a sûrement été créé par défaut sous suse avec l'option :

‘--preserve-root’ Fail upon any attempt to recursively change the root directory, /. Without --recursive, this option has no effect

Tu peux faire un chmod avec l'option '--no-preserve-root' => https://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html ou chmod 775 -R pour test. Tu peux aussi ajouter root au groupe www-data pour test uniquement.

Docker s'exécute toujours en root même si tu ajoutes l'utilisateur au groupe. If you want to be able to run docker as a regular user, add yourself to the docker group. Warning: Anyone added to the docker group is root equivalent. More information https://github.com/docker/docker/issues/9976 and https://docs.docker.com/engine/security/security/ Source : https://wiki.archlinux.org/index.php/Docker#Installation.

Doctor-Who commented 6 years ago

Quand www-data n'existe pas ? Comment dois je faire ? Chez moi c'est wwwrun:www par exemple (sous openSUSE il n'y a pas d'utilisateur et de groupe avec le même ID. Je teste sur un rep' user mais cela n'arrange pas mes points de montage :/

jancelin commented 6 years ago

On travaille dans un container qui n'est pas de même distribution que l'hote avec les pid.

root@20c13c8bce67:/# ls -l /var/www/websig/lizmap/var
total 40
-rwxrwxr-x  1 root     www-data 3072 Jan 29 09:28 cacheTemplate.db
drwxrwxr-x  5 www-data www-data 4096 Jan 29 11:36 config
drwxrwxr-x  2 www-data www-data 4096 Feb 26 11:19 db
drwxrwxr-x  2 www-data www-data 4096 Jan 29 09:28 lizmap-theme-config
drwxrwxr-x  2 www-data www-data 4096 Feb  5 09:45 log
drwxrwxr-x  2 www-data www-data 4096 Jan 29 09:28 mails
drwxrwxr-x 10 root     www-data 4096 Jan 29 09:28 overloads
drwxrwxr-x  2 root     www-data 4096 Jan 29 09:28 sessions
drwxrwxr-x  3 root     www-data 4096 Jan 29 09:28 themes
drwxrwxr-x  2 www-data www-data 4096 Jan 29 09:28 uploads
root@20c13c8bce67:/# ls -ln /var/www/websig/lizmap/var
total 40
-rwxrwxr-x  1  0 33 3072 Jan 29 09:28 cacheTemplate.db
drwxrwxr-x  5 33 33 4096 Jan 29 11:36 config
drwxrwxr-x  2 33 33 4096 Feb 26 11:19 db
drwxrwxr-x  2 33 33 4096 Jan 29 09:28 lizmap-theme-config
drwxrwxr-x  2 33 33 4096 Feb  5 09:45 log
drwxrwxr-x  2 33 33 4096 Jan 29 09:28 mails
drwxrwxr-x 10  0 33 4096 Jan 29 09:28 overloads
drwxrwxr-x  2  0 33 4096 Jan 29 09:28 sessions
drwxrwxr-x  3  0 33 4096 Jan 29 09:28 themes
drwxrwxr-x  2 33 33 4096 Jan 29 09:28 uploads
root@20c13c8bce67:/# 

donc si l'on veux changer des droits directement de l'hote il faut faire par exemple

chown 33:33 -R /home
Doctor-Who commented 6 years ago

Le répertoire home est défini dans /srv plutôt que home. Les droits sont bons lizmap:users Même chose quand j'essaye de lancer avec une nouvel utilisateur qui a son home dans /home/$user

Julien, le chown en 33:33 est une des étapes que j'ai faites au tout début quand j'ai vu que cela ne fonctionnait pas (vu dans ta doc de CentOS d'ailleurs)

Les droits me semblent bons (le groupe 33 = video) :

drwxr-xr-x  2   33 video   6 26 févr. 12:27 lizmap_project
drwxr-xr-x 11 root root  211 26 févr. 12:27 lizmap_var
drwxr-xr-x  2 root root    6 26 févr. 12:29 tmp
-rwxrwxr-x  1 root video 3072  2 févr. 16:28 cacheTemplate.db
drwxrwxr-x  5   33 video 4096  8 févr. 12:58 config
drwxrwxr-x  2   33 video   67 26 févr. 12:32 db
drwxrwxr-x  2   33 video   28  2 févr. 16:28 lizmap-theme-config
drwxrwxr-x  2   33 video   49 26 févr. 12:27 log
drwxrwxr-x  2   33 video   28  2 févr. 16:28 mails
drwxrwxr-x 10 root video  191  2 févr. 16:28 overloads
drwxrwxr-x  2 root video   28  2 févr. 16:28 sessions
drwxrwxr-x  3 root video   29  2 févr. 16:28 themes
drwxrwxr-x  2   33 video   28  2 févr. 16:28 uploads

J'ai une précision : je pars de 0, je n'ai aucune instance de lizmap actuelle. Peut être me manque t'il des fichiers ? Sur la doc Docker, tu indiques qu'il faut recopier certains fichiers d'une installation. Est-ce que c'est à faire où la doc coté docker hub n'est pas à jour ?

Doctor-Who commented 6 years ago

Juste pour vous dire que je ne suis pas complètement boulet : portainer tourne avec un volume extérieur sans problème et j'ai également pgadmin4 qui se lance correctement.

Doctor-Who commented 6 years ago

J'ai trouvé ! En entrant dans le container, j'ai pu lire les logs lizmap et voir :

warning 2018-03-07 15:15:45     [2]     session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_pathis correct (/var/lib/php5/sessions)     /var/www/websig/lib/jelix/core/jSession.class.php       89

J'ai chowné en www-data le répertoire sessions dans /var/lib/php5 et cela fonctionne, j'ai accès à l'admin lizmap.

jancelin commented 6 years ago

:+1:

kikislater commented 6 years ago

Donc c'était bien un problème de droits dans le container. Intéressant !