Aller au contenu

Docker : création de volume & docker-compose.yml & données absentes de la destination sur l'hôte


MilesTEG1

Messages recommandés

Bonjour,

J'ai créé un conteneur avec Portainer (un docker-compose.yml copier/coller dans portainer) et pour lui j'ai aussi spécifié dans le fichier docker-compose.yml un volume particulier.
Voilà de quoi il est question : 

---
version: "2.4"
services:
  SCENARIsuite-starter:
    image: scenari/suite-starter:latest
    container_name: SCENARIsuite-starter
    environment:
      - PUID=1054  # Docker-Scenari
      - PGID=100
      #- TZ=Europe/Paris
      # Name of the webapp. By default: scsuitestr50
      - SC_WEBAPP_NAME=scsuite
      
      # SC_PUBLIC_URL is mandatory. User access URL to the webapp. Example: SC_PUBLIC_URL=http://mydomain:8080/$SC_WEBAPP_NAME/
      # Note : Après l'installation, il faut accéder avec cette URL : http://[IP]:[port]/$SC_WEBAPP_NAME/&
      #        Sinon, il y a une erreur de droit d'accès...            http://192.168.2.200:8200/scsuite/&
      - SC_PUBLIC_URL=http://192.168.2.200:8200/scsuite
      
      # Set the password for the "system" user. By default it is automatically generated at each start.
      - SC_USER_SYSTEM_PASS=
      
      # Set the password for the "superadmin" user. By default it is automatically generated at each start.
      - SC_USER_SUPERADMIN_PASS=
      
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    volumes:
      - scenari_data:/var/lib/scenari
    ports:
      - 8200:8080
    
    restart: unless-stopped
    
    # Les valeurs ci-dessous sont à adapter à la quantité de RAM de votre NAS.
    # Sur mon 920+ j'ai 12Go de RAM.
    mem_limit: 2048m
    mem_reservation: 1024m

volumes:
  scenari_data:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/volume1/docker/SCENARIsuite-starter/data'

Le conteneur semble bien fonctionner, je peux créer du contenu avec lui (c'est-à-dire créer un atelier et autres pour ceux qui savent ce qu'est SCENARI...).
Le volume scenari_data est bien créé, et il contient ce que je crée avec le conteneur, j'ai vérifié :

AisQprE.png
72EE9hl.png

 

Le soucis c'est que rien n'apparait dans le dossier /volume1/docker/SCENARIsuite-starter/data :

la2XpoZ.png

 

Où est-ce que j'ai mal fait quelque chose ?

Mon objectif c'est de ne pas perdre mes productions et de pouvoir en faire des sauvegardes automatiquement avec HyperBackup qui sauvegarde le dossier docker, mais pas le /volume1/@docker/ donc le volume en question.

@.Shad. Est-ce que tu t'y connais en volumes comme ce que j'essaye de faire ?

Merci à tous ceux qui apporteront une pierre de plus à mes connaissances pour le moment assez rudimentaires 🙂

 

Lien vers le commentaire
Partager sur d’autres sites

Je me sers des volumes docker, mais juste quand je ne veux pas être gêné par des permissions ou uid/gid exotiques, ou quand je n'ai pas spécialement besoin d'accéder aux données en dehors du conteneur.
J'imagine que tu t'es basé sur : https://stackoverflow.com/questions/38396139/docker-change-folder-where-to-store-docker-volumes

Je ne m'en sers jamais servi ainsi en tout cas.
Ce que tu peux essayer, c'est de créer le volume en dehors du compose de Scenari, et tu y feras référence en tant que volume externe.

Ou alors bêtement créer un lien symbolique sur le NAS depuis le dossier que tu souhaites vers le volume Docker.

Lien vers le commentaire
Partager sur d’autres sites

@.Shad.

Alors, et bien avec un docker-compose up -d, ça semble fonctionner comme il faut, j'ai juste ajouter un name: scenari_data dans le .yml (sinon le nom du volume créé contenait le nom du dossier SCENARIsuite-starter :

root@Syno-DS920Plus:/volume1/docker/SCENARIsuite-starter# docker-compose up -d
Creating volume "scenari_data" with local driver
Creating SCENARIsuite-starter ... done

La partie du fichier yml modifée

volumes:
  scenari_data:
    driver: local
    name: scenari_data
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/volume1/docker/SCENARIsuite-starter/data'

Du coup, je vois bien les différents fichiers dans le dossier :

root@Syno-DS920Plus:/volume1/docker/SCENARIsuite-starter# ll data/
total 0
drwxr-xr-x  1            102   102 46 Jan 26 18:25 .
drwxr-xr-x+ 1 Docker-Scenari users 44 Dec 12 08:11 ..
drwxr-xr-x  1            102   102 18 Jan 26 18:25 addons
drwxr-xr-x  1            102   102 18 Jan 26 18:25 backup
drwxr-xr-x  1            102   102 36 Jan 26 18:25 data
drwxr-xr-x  1            102   102 36 Jan 26 18:25 working

 

Ceci étant validé, j'ai tenté autre chose. J'ai supprimé le conteneur et le volume. Puis recréé le volume avec cette commande :

docker volume create --opt type=none --name="scenari_data" --opt device=/volume1/docker/SCENARIsuite-starter/data/ --opt o=bind

et créé une stack dans Portainer mais avec ceci pour le volume :

volumes:
  scenari_data:
    external:
      name: scenari_data

Et ça fonctionne !! Nickel ^^

Bon c'est par contre un peu chiant ce Portainer qui peut pas faire vraiment la même chose que le docker-compose...
C'est presque vendu pour...
🙄
Du coup, bah je créerais ce conteneur dans Portainer avec le volume déclaré en externe.

N'empèche que j'ai appris quelques nouvelles choses aujourd'hui.
Et surtout que l'image scenari/suite-starter est quand même pas finie... ou faite avec les pieds...
Ne pas prévoir ça de base... c'est chiant...
C'est le seul conteneur que je crée qui ne fonctionne pas avec la définition du volume que je fais toujours :

    volumes:
      - /volume1/docker/SCENARIsuite-starter/data/:/var/lib/scenari


Merci pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.