Skip to content

Add volumes command #12954

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open

Conversation

leoperegrino
Copy link

What I did
Implemented volumes command with:

  • GO template support
  • service filtering
  • test cases
  • docs update.

Given the following compose files:

# compose_1.yaml
name: compose_1

volumes:
  vol_1:
  vol_2:
  vol_3:

services:

  service_1:
    image: gcr.io/google-containers/pause
    restart: no
    volumes:
      - vol_1:/tmp/vol_1
      - vol_2:/tmp/vol_2

  service_2:
    image: gcr.io/google-containers/pause
    restart: no
    volumes:
      - vol_3:/tmp/vol_3
# compose_2.yaml
name: compose_2

volumes:
  vol_1:
  # not used
  vol_2:

services:

  service_1:
    image: gcr.io/google-containers/pause
    restart: no
    volumes:
      - vol_1:/tmp/vol_1

The following manual tests should hold:

docker compose -f compose_1.yaml up -d
docker compose -f compose_2.yaml up -d

docker volume ls
# DRIVER    VOLUME NAME
# local     compose_1_vol_1
# local     compose_1_vol_2
# local     compose_1_vol_3
# local     compose_2_vol_1
# local     compose_2_vol_2

docker compose -f compose_1.yaml volumes
# DRIVER    VOLUME NAME
# local     compose_1_vol_1
# local     compose_1_vol_2
# local     compose_1_vol_3

docker compose -f compose_1.yaml volumes service_1
# DRIVER    VOLUME NAME
# local     compose_1_vol_1
# local     compose_1_vol_2

docker compose -f compose_1.yaml volumes service_2
# DRIVER    VOLUME NAME
# local     compose_1_vol_3

docker compose -f compose_1.yaml volumes service_1 service_2
# DRIVER    VOLUME NAME
# local     compose_1_vol_1
# local     compose_1_vol_2
# local     compose_1_vol_3

docker compose -f compose_2.yaml volumes
# DRIVER    VOLUME NAME
# local     compose_2_vol_1

docker compose -f compose_2.yaml volumes service_1
# DRIVER    VOLUME NAME
# local     compose_2_vol_1

docker compose -f compose_2.yaml volumes wrong_service_name
# no such service: wrong_service_name

docker compose -f compose_1.yaml volumes --format 'table {{.Name}}'
# VOLUME NAME
# compose_1_vol_1
# compose_1_vol_3
# compose_1_vol_2

docker compose -f compose_1.yaml volumes --format json
# {"Availability":"N/A","Driver":"local","Group":"N/A","Labels":"com.docker.compose.project=compose_1,com.docker.compose.version=2.36.0,com.docker.compose.volume=vol_3,com.docker.compose.config-hash=4b9e9f43e5d7acc8216829918e68c3e509add0e7e0314f287b6619be566c50f1","Links":"N/A","Mountpoint":"/var/lib/docker/volumes/compose_1_vol_3/_data","Name":"compose_1_vol_3","Scope":"local","Size":"N/A","Status":"N/A"}
# {"Availability":"N/A","Driver":"local","Group":"N/A","Labels":"com.docker.compose.config-hash=2dfb8b5aea067aa119a8c5e855f68412522bebd53b3d6e685b2322e5dfdc892d,com.docker.compose.project=compose_1,com.docker.compose.version=2.36.0,com.docker.compose.volume=vol_1","Links":"N/A","Mountpoint":"/var/lib/docker/volumes/compose_1_vol_1/_data","Name":"compose_1_vol_1","Scope":"local","Size":"N/A","Status":"N/A"}
# {"Availability":"N/A","Driver":"local","Group":"N/A","Labels":"com.docker.compose.version=2.36.0,com.docker.compose.volume=vol_2,com.docker.compose.config-hash=ab52462cd8693689c92819e3115b636c9df42021828d0aeda344b185185e9f2a,com.docker.compose.project=compose_1","Links":"N/A","Mountpoint":"/var/lib/docker/volumes/compose_1_vol_2/_data","Name":"compose_1_vol_2","Scope":"local","Size":"N/A","Status":"N/A"}

Remarks:

  • a volume declared in the compose but not used will not appear, as shown before with compose_2_vol_2
  • should this be marked as experimental?

Related issue

This closes #11111

Signed-off-by: Leonardo Peregrino <55335068+leoperegrino@users.noreply.github.com>
Signed-off-by: Leonardo Peregrino <55335068+leoperegrino@users.noreply.github.com>
Signed-off-by: Leonardo Peregrino <55335068+leoperegrino@users.noreply.github.com>
Signed-off-by: Leonardo Peregrino <55335068+leoperegrino@users.noreply.github.com>
@leoperegrino leoperegrino requested a review from a team as a code owner June 18, 2025 15:36
@leoperegrino leoperegrino requested review from ndeloof and glours June 18, 2025 15:36
Signed-off-by: Leonardo Peregrino <55335068+leoperegrino@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Having a volume command
2 participants