Existe-t-il un moyen de partager un volume .bash_history
avec un conteneur Docker de sorte que chaque fois que je vais dans un shell, mon historique bash soit disponible pour le défilement?
Ce serait génial de pouvoir faire la même chose avec IPython aussi.
Voici l'exemple de la documentation sur le volume: Monter un fichier hôte en tant que volume de données :
docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash
Cela vous déposera dans un nouveau conteneur dans un shell bash, vous aurez votre historique bash de l'hôte et lorsque vous quitterez le conteneur, l'hôte aura l'historique des commandes tapées pendant qu'il est dans le conteneur.
Dans votre docker-compose.override.yml
:
version: '2'
services:
whatever:
…
volumes:
- …
- ~/.bash_history:/root/.bash_history
Pour conserver l'historique IPython, vous pouvez définir la variable d'environnement IPYTHONDIR
sur quelque part dans votre volume mappé.
Le docker-compose.override.yml
ressemblerait à ceci:
version: '2'
services:
some-service:
environment:
- IPYTHONDIR=/app/.ipython
volumes:
- .:/app
Ma solution est utile lorsque:
.bash_history
local avec .bash_history
dans votre conteneur.bash_history
entre vos versions.bash_history
dans git repo mais vous voulez le créer automatiquement dans le même répertoire au démarrage d'un conteneurJe suppose que la structure du fichier est la suivante:
docker-compose.yml
docker/
\--> bash/
\--> .bashrc
\--> .bash_history
docker-compose.yml
web-service:
build: .
volumes:
- ./docker/bash/.bashrc:/home/YOUR_USER_NAME/.bashrc
- ./docker/bash:/home/YOUR_USER_NAME/bash
./docker/bash/.bashrc - il créera automatiquement .bash_history:
export HISTFILE=~/bash/.bash_history
touch $HISTFILE
Vous pouvez éventuellement ajouter à .gitignore :
docker/bash/.bash_history