Today we’ll be looking into two things.
First is how we can persist the data with docker-compose.
The second is using a script to manage your docker composes.
Persisting data with docker-compose:
Use volumes: Volumes are the preferred mechanism for persisting data generated by and used by Docker containers.
While bind mounts are dependent on the directory structure and OS of the host machine, volumes are completely managed by Docker.
In addition, volumes are often a better choice than persisting data in a container’s writable layer, because a volume does not increase the size of the containers using it, and the volume’s contents exist outside the lifecycle of a given container.
A single docker-compose service for Redis with a volume looks like this:
On the first invocation of
docker-compose up the volume will be created. The same volume will be reused on the following invocations.
docker-compose up -d for running the process in the background.
If a volume created outside of the compose needs to be attached, the external true property:
docker-compose downwould not remove the volume attached to your container, but
docker-compose down -vwill.
Alternatively, you can use this
docker volume rm <volume-name>to remove the volume. Use
docker volume lsto get the volume name.
Smartly manage your docker composes.
You can use a docker-desktop client to manage your Docker containers and do much more. For me, I just needed a simple script that will start the docker containers after my machine has started.
For which I created the following script, which works perfectly with
Docker version 20.10.7, build f0df350
For the script to work, create a main directory with sub dirs containingt the docker-compose.yml.
This is the directory structure I currently have.
I’m further planning to extend this script to be dynamic and support the docker-compose down command too.