tbellembois / gochimitheque

Open source chemical product management application written in Golang.
GNU General Public License v3.0
4 stars 3 forks source link

installation chimitheque sous docker #95

Open MobzySolo opened 1 year ago

MobzySolo commented 1 year ago

Bonjour, j'essaye d'installer chimitheque sur Debian 12 et pour le moment, je n'arrive pas à faire fonctionner l'application en utilisant docker. Le conteneur redémarre en boucle et un message d'erreur indique que le conteneur n'a pas les droits d'écrire dans /var/log/chimitheque.log. Mon utilisateur courant est bien dans le groupe docker est c'est à partir de lui que j'ai crée les conteneurs. Merci pour votre aide. Cordialement.

support@chimitheque:~$ docker ps
CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS                                  PORTS              NAMES
5c07d776801a   tbellembois/gochimitheque:2.0.7   "/entrypoint.sh"         29 seconds ago   Restarting (1) Less than a second ago                     chimitheque
8e4283eb0826   nginx:1.19                        "/docker-entrypoint.…"   30 seconds ago   Up 28 seconds 

Un message d'erreur indique que le conteneur n'a pas les droits d'écrire dans /var/log/chimitheque.log :

support@chimitheque:~$ docker logs 5c07d776801a
time="2023-09-08T10:57:06Z" level=fatal msg="open /var/log/chimitheque.log: permission denied"
time="2023-09-08T10:57:07Z" level=fatal msg="open /var/log/chimitheque.log: permission denied"
support@ren-0985-chimitheque:~$ docker network ls
NETWORK ID     NAME                  DRIVER    SCOPE
11d6df424bc5   bridge                bridge    local
cac993180137   host                  host      local
222911c394f5   none                  null      local
71fcccd0e9d7   root_chimitheque      bridge    local
d634d20689c1   support_chimitheque   bridge    local

Voici la composition des répertoires de données pour les conteneurs Nginx et Chimithèque :

support@chimitheque:~$ tree -pa /data/
[drwxr-xr-x]  /data/
├── [drwxr-xrwx]  docker-chimitheque
│   └── [drwxr-xr-x]  chimitheque-db
└── [drwxr-xr-x]  docker-nginx
    ├── [drwxr-xr-x]  nginx-auth
    │   └── [drwxr-xr-x]  certs
    └── [drwxr-xr-x]  nginx-templates
        └── [-rw-r--r--]  nginx-chimitheque.conf.template

7 directories, 1 file

Le statut du service docker :

sudo systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-09-08 13:51:12 CEST; 4min 7s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 461501 (dockerd)
      Tasks: 39
     Memory: 82.4M
        CPU: 2.206s
     CGroup: /system.slice/docker.service
             ├─461501 /usr/sbin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
             ├─461681 /usr/sbin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 443 -container-ip 172.18.0.2 -container-port 443
             ├─461687 /usr/sbin/docker-proxy -proto tcp -host-ip :: -host-port 443 -container-ip 172.18.0.2 -container-port 443
             ├─461701 /usr/sbin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.2 -container-port 80
             └─461707 /usr/sbin/docker-proxy -proto tcp -host-ip :: -host-port 80 -container-ip 172.18.0.2 -container-port 80

sept. 08 13:51:14 ren-0985-chimitheque dockerd[461501]: time="2023-09-08T13:51:14.126582666+02:00" level=info msg="ignoring event" container=5c07d776801abc20d6f2ce11f314d792b6a25d49c66f8bce14ebc4c7090794ea module=libcontainerd namespac>
sept. 08 13:51:15 ren-0985-chimitheque dockerd[461501]: time="2023-09-08T13:51:15.252633554+02:00" level=info msg="ignoring event" container=5c07d776801abc20d6f2ce11f314d792b6a25d49c66f8bce14ebc4c7090794ea module=libcontainerd namespac>
sept. 08 13:51:17 ren-0985-chimitheque dockerd[461501]: time="2023-09-08T13:51:17.145506867+02:00" level=info msg="ignoring event" container=5c07d776801abc20d6f2ce11f314d792b6a25d49c66f8bce14ebc4c7090794ea module=libcontainerd namespac>
sept. 08 13:51:20 ren-0985-chimitheque dockerd[461501]: time="2023-09-08T13:51:20.700362987+02:00" level=info msg="ignoring event" container=5c07d776801abc20d6f2ce11f314d792b6a25d49c66f8bce14ebc4c7090794ea module=libcontainerd namespac>
sept. 08 13:51:27 ren-0985-chimitheque dockerd[461501]: time="2023-09-08T13:51:27.473092523+02:00" level=info msg="ignoring event" container=5c07d776801abc20d6f2ce11f314d792b6a25d49c66f8bce14ebc4c7090794ea module=libcontainerd namespac>
sept. 08 13:51:40 ren-0985-chimitheque dockerd[461501]: time="2023-09-08T13:51:40.628485683+02:00" level=info msg="ignoring event" container=5c07d776801abc20d6f2ce11f314d792b6a25d49c66f8bce14ebc4c7090794ea module=libcontainerd namespac>
sept. 08 13:52:06 ren-0985-chimitheque dockerd[461501]: time="2023-09-08T13:52:06.566738488+02:00" level=info msg="ignoring event" container=5c07d776801abc20d6f2ce11f314d792b6a25d49c66f8bce14ebc4c7090794ea module=libcontainerd namespac>
sept. 08 13:52:58 ren-0985-chimitheque dockerd[461501]: time="2023-09-08T13:52:58.148563861+02:00" level=info msg="ignoring event" container=5c07d776801abc20d6f2ce11f314d792b6a25d49c66f8bce14ebc4c7090794ea module=libcontainerd namespac>
sept. 08 13:53:58 ren-0985-chimitheque dockerd[461501]: time="2023-09-08T13:53:58.493939564+02:00" level=info msg="ignoring event" container=5c07d776801abc20d6f2ce11f314d792b6a25d49c66f8bce14ebc4c7090794ea module=libcontainerd namespac>
sept. 08 13:54:58 ren-0985-chimitheque dockerd[461501]: time="2023-09-08T13:54:58.856866839+02:00" level=info msg="ignoring event" container=5c07d776801abc20d6f2ce11f314d792b6a25d49c66f8bce14ebc4c7090794ea module=libcontainerd namespac>

Et le contenu de mon fichier docker-compose :

support@ren-0985-chimitheque:/data/docker-chimitheque/chimitheque-db$ cat /home/support/docker-compose.yml 
version: '3.8'
services:
    nginx:
        container_name: nginx
        image: nginx:1.19
        restart: unless-stopped
        ports:
            - 443:443
            - 80:80
        volumes:
            # You can change the "/data/docker-nginx" with
            # another directory if you want to store the container
            # permanent data elsewhere.
            - /data/docker-nginx/nginx-auth/certs:/etc/nginx/certs
            - /data/docker-nginx/nginx-templates:/etc/nginx/templates
        networks:
            - chimitheque
    chimitheque:
        container_name: chimitheque
        # Always choose the "production" image.
        # development
        #image: tbellembois/gochimitheque:latest
        # production
        image: tbellembois/gochimitheque:2.0.7
        restart: unless-stopped
        environment:
            # enable debug logs - not recommended in production
            - CHIMITHEQUE_DEBUG=false
            # application path, with a trailing /
            - CHIMITHEQUE_APPPATH=/chimitheque/
            # application url
            - CHIMITHEQUE_APPURL=http://xxx.xxx.xxx.xxx
            # you should not have any reason to change this
            - CHIMITHEQUE_DOCKERPORT=8081
            # SMTP server parameters
            - CHIMITHEQUE_MAILSERVERADDRESS=postel.xxx.xxx.fr
            - CHIMITHEQUE_MAILSERVERPORT=25
            - CHIMITHEQUE_MAILSERVERSENDER=noreply@chimitheque-rennes.fr
            - CHIMITHEQUE_MAILSERVERUSETLS=false
            # share your product database
            - CHIMITHEQUE_ENABLEPUBLICPRODUCTSENDPOINT=false
            # list of admins
            - CHIMITHEQUE_ADMINS=gilles.xxxxx@xxxxxx.fr
            # log file
            - CHIMITHEQUE_LOGFILE=/var/log/chimitheque.log
            # LDAP server parameters
            #- CHIMITHEQUE_LDAPSERVERURL=ldaps://ldapserver.foo.fr/ou=users,dc=foo,dc=fr
            #- CHIMITHEQUE_LDAPSERVERUSERNAME=CN=admin,OU=users,OU=local,DC=users,DC=fr
            #- CHIMITHEQUE_LDAPSERVERPASSWORD=password
            #- CHIMITHEQUE_LDAPUSERSEARCHBASEDN=OU=users,DC=foo,DC=fr
            #- CHIMITHEQUE_LDAPGROUPSEARCHBASEDN=OU=users,DC=foo,DC=fr
            # memberOf attribute must be provided by the LDAP server
            #- CHIMITHEQUE_LDAPUSERSEARCHFILTER=(&(mail=%s)(objectclass=user))
            # cn attribute must be provided by the LDAP server
            #- CHIMITHEQUE_LDAPGROUPSEARCHFILTER=(cn=%s)
            # auto create users in db with LDAP authentication
            # - CHIMITHEQUE_AUTOCREATEUSER=true
            # one shot command: reset admin password
            # - CHIMITHEQUE_RESETADMINPASSWORD=true
            # one shot command: update storages QR codes
            # - CHIMITHEQUE_UPDATEQRCODE=true
            # one shot command: test your SMTP server parameters
            # - CHIMITHEQUE_MAILTEST=john.do@foo.com
            # one shot command: initial product database import
        #     - CHIMITHEQUE_IMPORTFROM=https://chimitheque.ens-lyon.fr
        volumes:
            - /data/docker-chimitheque/chimitheque-db:/data
        networks:
            - chimitheque
        depends_on:
            - nginx
networks:
    chimitheque:
tbellembois commented 1 year ago

Bonjour,

Je n'arrive pas à reproduire le problème. Pouvez vous tester avec l'image tbellembois/gochimitheque:latest ?

MobzySolo commented 1 year ago

Bonjour et merci pour votre retour.

Je viens de tester avec l'image demandé et j'ai toujours le même soucis. J'ai fait exactement la même chose sur une ubuntu server 22.04.3. Il y a certainement un paramètre qui m’échappe mais je ne vois pas où.

support@chimitheque:~$ docker ps -a

CONTAINER ID   IMAGE                              COMMAND                  CREATED      STATUS                          PORTS                                                                      NAMES
a7d227b93446   tbellembois/gochimitheque:latest   "/entrypoint.sh"         2 days ago   Restarting (1) 21 seconds ago                                                                              chimitheque
f4793c496c15   nginx:1.19                         "/docker-entrypoint.…"   2 days ago   Up 10 hours                     0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx

support@chimitheque:~$ docker logs a7d227b93446

parameters:
-dockerport 8081
-appurl http://xxx.xxx.xxx.xxx
-apppath /chimitheque/
-mailserveraddress smtp.xxxxxx.fr
-mailserverport 25
-mailserversender noreply@chimitheque.fr
-mailserverusetls
-enablepublicproductsendpoint
-admins gilles.xxxxxx@xxxx.fr
-debug
-logfile /var/log/chimitheque.log
command:
/var/www-data/gochimitheque -dbpath /data -appurl http://xxx.xxx.xxx.xxx -apppath /chimitheque/ -dockerport 8081 -mailserveraddress smtp.xxxxxx.fr -mailserverport 25 -mailserversender noreply@chimitheque.fr -mailserverusetls -enablepublicproductsendpoint -admins gilles.xxxxxx@xxxx.fr -logfile /var/log/chimitheque.log -debug
time="2023-09-13T16:48:50Z" level=fatal msg="open /var/log/chimitheque.log: permission denied"
Oribier commented 1 year ago

Bonjour,

De notre coté, nous avons installé la version latest sur une Debian12 et nous avons le meme soucis.

Merci Olivier

tbellembois commented 1 year ago

Je viens de pousser une nouvelle image avec le tag "latest". Pouvez vous re tester ?

MobzySolo commented 1 year ago

Bonjour et merci. Je viens de tester la nouvelle image sur une installation toute fraîche de debian 12. Je n'ai plus de message d'erreur concernant le problème de permission sur le fichier /var/log/chimitheque.log. Malheureusement j'ai toujours un redémarrage du conteneur chimitheque

7ad3415d88cf   tbellembois/gochimitheque:latest   "/entrypoint.sh"         4 minutes ago   Restarting (1) 5 seconds ago                                                   chimitheque
0c514bbf23b1   nginx:1.19                         "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes                   80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx

Les logs du conteneur ne me donne pas vraiment d'indication sur le problème :

parameters:
-dockerport 8081
-appurl https://192.168.122.144
-apppath /chimitheque/
-enablepublicproductsendpoint
-admins gilles.xxxxx@xxxxx.fr
-debug
-logfile /var/log/chimitheque.log
command:
/var/www-data/gochimitheque -dbpath /data -appurl https://192.168.122.144 -apppath /chimitheque/ -dockerport 8081 -enablepublicproductsendpoint -admins gilles.xxxxx@xxxxx.fr -logfile /var/log/chimitheque.log -debug

Voici la configuration du fichier docker

version: '3.8'
services:
    nginx:
        container_name: nginx
        image: nginx:1.19
        restart: unless-stopped
        ports:
            - 443:443
            #- 80:80
        volumes:
            # You can change the "/data/docker-nginx" with
            # another directory if you want to store the container
            # permanent data elsewhere.
            - /data/docker-nginx/nginx-auth/certs:/etc/nginx/certs
            - /data/docker-nginx/nginx-templates:/etc/nginx/templates
        networks:
            - chimitheque
    chimitheque:
        container_name: chimitheque
        # Always choose the "production" image.
        # development
        #image: tbellembois/gochimitheque:latest
        # production
        image: tbellembois/gochimitheque:latest
        restart: unless-stopped
        environment:
            # enable debug logs - not recommended in production
            - CHIMITHEQUE_DEBUG=false
            # application path, with a trailing /
            - CHIMITHEQUE_APPPATH=/chimitheque/
            # application url
            - CHIMITHEQUE_APPURL=https://192.168.122.144
            # you should not have any reason to change this
            - CHIMITHEQUE_DOCKERPORT=8081
            # SMTP server parameters
            #- CHIMITHEQUE_MAILSERVERADDRESS=smtp.foo.com
            #- CHIMITHEQUE_MAILSERVERPORT=467
            #- CHIMITHEQUE_MAILSERVERSENDER=noreply@foo.com
            #- CHIMITHEQUE_MAILSERVERUSETLS=true
            # share your product database
            - CHIMITHEQUE_ENABLEPUBLICPRODUCTSENDPOINT=false
            # list of admins
            - CHIMITHEQUE_ADMINS=gilles.xxxxx@xxxxx.fr
            # log file
            - CHIMITHEQUE_LOGFILE=/var/log/chimitheque.log
            # LDAP server parameters
            #- CHIMITHEQUE_LDAPSERVERURL=ldaps://ldapserver.foo.fr/ou=users,dc=foo,dc=fr
            #- CHIMITHEQUE_LDAPSERVERUSERNAME=CN=admin,OU=users,OU=local,DC=users,DC=fr
            #- CHIMITHEQUE_LDAPSERVERPASSWORD=password
            #- CHIMITHEQUE_LDAPUSERSEARCHBASEDN=OU=users,DC=foo,DC=fr
            #- CHIMITHEQUE_LDAPGROUPSEARCHBASEDN=OU=users,DC=foo,DC=fr
            # memberOf attribute must be provided by the LDAP server
            #- CHIMITHEQUE_LDAPUSERSEARCHFILTER=(&(mail=%s)(objectclass=user))
            # cn attribute must be provided by the LDAP server
            #- CHIMITHEQUE_LDAPGROUPSEARCHFILTER=(cn=%s)
            # auto create users in db with LDAP authentication
            # - CHIMITHEQUE_AUTOCREATEUSER=true
            # one shot command: reset admin password
            # - CHIMITHEQUE_RESETADMINPASSWORD=true
            # one shot command: update storages QR codes
            # - CHIMITHEQUE_UPDATEQRCODE=true
            # one shot command: test your SMTP server parameters
            # - CHIMITHEQUE_MAILTEST=john.do@foo.com
            # one shot command: initial product database import
        #     - CHIMITHEQUE_IMPORTFROM=https://chimitheque.ens-lyon.fr
        volumes:
            - /data/docker-chimitheque/chimitheque-db:/data
        networks:
            - chimitheque
        depends_on:
            - nginx
networks:
    chimitheque:

Même si je n'ai plus de message d'erreur concernant les permissions sur le fichier /var/log/chimitheque.log, ce fichier n'est pas crée au démarrage du conteneur.

Merci encore pou votre aide. Cordialement, Gilles.

tbellembois commented 1 year ago

Je vais essayer de reproduire le problème dans une VM debian 12.

tbellembois commented 1 year ago

Pouvez vous essayer avec la commande:

chmod -R o+w /data/docker-chimitheque ?

MobzySolo commented 1 year ago

Je viens de lancer la commande et j'ai relancé le conteneur. Malheureusement, ce dernier redémarre toujours en boucle.

support@chimitheque:/data$ ls -alh
total 16K
drwxr-xr-x  4 root root 4,0K 27 oct.  09:54 .
drwxr-xr-x 19 root root 4,0K 27 oct.  09:54 ..
drwxr-xrwx  3 root root 4,0K 27 oct.  09:54 docker-chimitheque
drwxr-xr-x  4 root root 4,0K 27 oct.  09:54 docker-nginx
tbellembois commented 1 year ago

Il faut aussi mettre le droit à /data: chmod -R o+w /data

MobzySolo commented 1 year ago

Les droits ont bien été ajoutés sur /data, mais sans obtenir de résultats supplémentaires.

tbellembois commented 1 year ago

Je viens d'effectuer des tests et modifié légèrement la configuration dans le docker-compose.yml:

        volumes:
            - /data/docker-chimitheque/chimitheque-db:/data
            - /data/docker-chimitheque/chimitheque-log:/var/log

et

mkdir -p /data/docker-chimitheque/chimitheque-db
mkdir -p /data/docker-chimitheque/chimitheque-log

et effectuer un chmod -R o+rwx /data/