Docker Community Forums

Share and learn in the Docker community.

Docker-compose - create a volume on first run and create a directory structure


#1

I’ve got a docker-compose file with about 4 related services. They currently all use directories bound to the host.

I’m looking at creating a shared data volume, shared between 3 services.

Creating the volume in the docker-compose file I’m happy with. But given that 3 services are going to be sharing this volume, I don’t want a flat structure in the data volume…and the 3 services don’t create the folder upon creation.

The structure I’m after is:

\data
   \service2
   \service3

Service1 container will use data\service2 and data\service3 directories.
Service2 Container will use data\service2 only
Service3 Container will use data\service3 3 only

Now I know I could just manually create the data volume and create the dirs by hand. But I want to learn if file this possible in compose.

Would I create another service with my own dockerfile (the others are community created), that runs on first instance and creates the data structure? If so, how can I tell this new service to only run if the data volume doesn’t exist?

Thanks.