Docker-compose permet facilement de monter des volumes à l'intérieur d'un conteneur docker.
Cela se fait simplement en définissant une liste de volume à monter depuis votre fichier docker-compose:
volumes:
- ~/.aws:/etc/aws
- data:/opt/application/data
Cela suffit à monter les répertoires suivants:
- ${HOME}/.aws
sur l'hôte dans le repertoire
/etc/aws
du conteneur
-
data
sur l'hôte dans le repertoire
/opt/application/data
du conteneur
Bien noter que
data
est un chemin relatif par rapport à l'emplacement du fichier docker-compose (et non pas par rapport au répertoire courant).
Maintenant rien n'empêche d'utiliser docker-compose depuis un conteneur mais si vous montez des volumes ils risquent de ne pas être monter.
Pourquoi? Parce que le conteneur et l'hôte utilise le même docker daemon. Quand on monte un volume le docker daemon le résout depuis l'hôte et non pas depuis le conteneur.
Pour que cela fonctionne il faut d'abord penser à monter le volume depuis l'hôte dans le conteneur en gardant le même chemin. Ce conteneur peut ensuite démarrer un autre conteneur en montant le volume car ce repertoire existe à la foi dans le conteneur et surtout sur l'hôte.
Bien que démarrer depuis un conteneur, les 2 conteneurs se trouvent en fait au même niveau par rapport à l'hôte et au docker daemon.