Mon cas d'utilisation :
J'utilise une instance octoprint conteneurisée pour piloter une imprimante 3D. Le problème que je rencontre est que si l'imprimante (usb) n'est pas connectée pendant le processus de démarrage du conteneur, alors il ne démarre pas du tout. Docker compose ne peut pas trouver le périphérique usb lorsqu'il n'est pas connecté, ce qui fait que le conteneur ne démarre pas.
Le problème est que l'imprimante est physiquement éteinte lorsqu'elle n'est pas en train d'imprimer et qu'allumer l'imprimante à chaque fois que le conteneur a besoin d'un redémarrage n'est pas une solution faisable. Existe-t-il un moyen (dans docker compose land) de démarrer le conteneur lorsqu'un périphérique n'est pas disponible et de le relier une fois qu'il est disponible ? Ou de vérifier si le périphérique est présent et si ce n'est pas le cas, de démarrer sans lui. L'OS hôte que j'utilise est le raspberry pi OS.
Ma configuration actuelle est la suivante :
version: '3'
services:
octoprint:
container_name:octoprint
image: "octoprint/octoprint"
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
network_mode:host
restart: unless-stopped
Je n'arrive pas à trouver un moyen de le faire.
La seule chose à laquelle je pense est de créer un script qui se déclenche lorsque /dev/ttyUSB0 est créé et de l'ajouter au conteneur déjà en cours d'exécution. Mais cela semble être la pire des solutions. J'aimerais résoudre ce problème dans le cadre de docker/docker compose.
Une autre "solution" consiste à redémarrer automatiquement le conteneur chaque fois que l'imprimante est mise sous tension par l'intermédiaire d'une intégration d'assistance à domicile. Il s'agit également d'un scénario catastrophe que j'aimerais éviter.
De plus, je ne suis pas sûr de savoir si je dois poster ceci sur la branche "superuser" de stackexchange ou sur la branche unix/devops. Merci de me corriger si je dois le poster ailleurs.