Category: Development

Tips Docker: Keep your bash history

Author(s)

Gilles
Gilles
I'm starting by heavily using docker containers for developing, testing and reviewing web applications.
There was one thing that bugged me for a long time: the fact that I lost the history of commands I typed in the shell (bash) of the containers each time I stopped/restarted them. I don't have a good memory and don't like to repeat myself. Also, I'm constantly searching in my history (with history|grep thing or CTRL+R) and wasn't able to do it correctly in a container.
I will present you two solutions to resolve this annoying issue.

Share the .bash_history file with the host (docker-compose)

The idea is simple: store bash history on the host and bind-mount this file into the container.
In the following example, I use a file named .docker_bash_history that I stored in my home directory. Important the file must exist before mounting it.
You can achieve this with the following docker-compose.yml example file:
<script src="https://gist.github.com/gido/9b7e323571cf61820bd4baef92e30861.js?file=docker-compose.example1.yml "></script>
One advantage of this approach is that the bash history can be shared between all your containers. You can also bind-mount your .bash_history file of the host instead of using a dedicated file (.docker_bash_history).

Store .bash_history into a named volume

Another way is to persist the .bash_history into a named volume and rely on the HISTFILE environment variable to specify where the history file is:
<script src="https://gist.github.com/gido/9b7e323571cf61820bd4baef92e30861.js?file=docker-compose.example2.yml "></script>

Without docker-compose

The same approach can be used without docker-compose. Eq:
$ docker run -it -v ~/.docker_bash_history:/root/.bash_history ubuntu bash
That's it !

More articles

Author(s)

Akira
Akira

Making of : “La nuit des Losers”

lanuitdeslosers.ch, built fast: paper wireframes, a bold hand-drawn identity, then Claude Code to prototype and ship. A mouse-tracking hero animation, a bowling game made of sponsor logos, and a few bugs we’re keeping.
lanuitdeslosers.ch, built fast: paper wireframes, a bold hand-drawn identity, then Claude Code to prototype and ship. A mouse-tracking hero animation, a bowling game made of sponsor logos, and a few bugs we’re keeping.
Making of : “La nuit des Losers”

Author(s)

Pierre
Pierre

Dark mode: necessity or trend

Nous faisons le tri entre idées reçues, réalités techniques et bonnes pratiques de design.
Nous faisons le tri entre idées reçues, réalités techniques et bonnes pratiques de design.
Dark mode: necessity or trend

Author(s)

Yann
Pierre
Yann and Pierre

Experiment #2 – Surway, a social experiments game

Pour notre deuxième expérimentation, nous avons relevé le défi de sortir de notre zone de confort en développant Surway, un jeu vidéo jouable directement dans le navigateur, où les actions de chaque joueur restent inscrites pour tous ceux qui suivront.
Pour notre deuxième expérimentation, nous avons relevé le défi de sortir de notre zone de confort en développant Surway, un jeu vidéo jouable directement dans le navigateur, où les actions de chaque joueur restent inscrites pour tous ceux qui suivront.
Experiment #2 – Surway, a social experiments game