docker-compose prepends current directory name to named volumes

docker-compose

docker-compose

Issues – docker-compose prepends current directory name to named volumes

What actually happens is that the named volume gets prepended with (a simplified version of) the directory name from which the docker-compose command was run.

For instance, if I run from the “dcompos-programs” directory, and I name the volume “my_named_vol”, then I end up with a volume named “dcompos-programs_my_named_vol”.

docker-compose-named-volume.yml:

[text]

version: ‘3’
services:

solr:
image: alpine:3.5
container_name: foo
volumes:
– my_named_vol:/opt/foo
volumes:
my_named_vol:

[/text]

Result:

[text]

$ docker-compose -f docker-compose-named-volume.yml up -d && \
> echo “## named volume:” && \
> docker volume ls | grep my_named_vol && \
> echo “## stop” && \
> docker-compose -f docker-compose-named-volume.yml down && \
> echo “## rm volume” && \
> docker volume rm $(docker volume ls | grep my_named_vol | awk ‘{print $2}’)
Creating network “deploymentroot_default” with the default driver
Creating volume “dcompos-programs_my_named_vol” with default driver
Creating foo

[/text]

Answer
docker-compose uses a project name. By default it’s the directory name which prevents collisions with existing containers. But you can use -p to change the prefix name.

Docker Tutorials Fundamental To Advanced-2021 Crash Course:- https://bit.ly/3hOIbTB

You can use the external volume setting to avoid the prefix.
https://docs.docker.com/compose/compose-file/#external

Rajesh Kumar
Follow me