docker-compose: no declaration was found in the volumes section
Asked Answered
A

2

6

I'm trying to use Docker-Compose on Microsoft Windows to create a stack for Seafile.

The error message after creating is:

Deployment error failed to deploy a stack: Named volume “C:/Users/Administrator/Docker/Volumes/Seafile/Mysql:/var/lib/mysql:rw” is used in service “db” but no declaration was found in the volumes section. : exit status 1

Here's my problematic docker-compose.yaml file:

version: '2'
services:
  db:
    image: mariadb:10.5
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=db_dev  # Requested, set the root's password of MySQL service.
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - C:/Users/Administrator/Docker/Volumes/Seafile/Mysql:/var/lib/mysql  # Requested, specifies the path to MySQL data persistent store.
    networks:
      - seafile-net

  memcached:
    image: memcached:1.5.6
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net
          
  seafile:
    image: seafileltd/seafile-mc:latest
    container_name: seafile
    ports:
      - "9000:80"
#     - "443:443"  # If https is enabled, cancel the comment.
    volumes:
      - C:/Users/Administrator/Docker/Volumes/Seafile/Seafile:/shared   # Requested, specifies the path to Seafile data persistent store.
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=db_dev  # Requested, the value shuold be root's password of MySQL service.
      - TIME_ZONE=Etc/UTC  # Optional, default is UTC. Should be uncomment and set to your local time zone.
      - [email protected]  # Specifies Seafile admin user, default is '[email protected]'.
      - SEAFILE_ADMIN_PASSWORD=asecret     # Specifies Seafile admin password, default is 'asecret'.
      - SEAFILE_SERVER_LETSENCRYPT=false   # Whether to use https or not.
      - SEAFILE_SERVER_HOSTNAME=docs.seafile.com # Specifies your host name if https is enabled.
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:
Ansley answered 6/4, 2022 at 6:38 Comment(2)
I think the Windows tag could be removed, since the question is not really related to Windows but just Docker itself.Nunez
I also think that the #Docker tag itself could be removed, because this question is not about containers, but syntax of Docker compose itself. Proposed an editNunez
N
9

When in docker-compose you see the error "no declaration was found in the volumes section" - probably, you are not declaring the volumes from the root section of your Yaml configuration.

Quick explaination:

...
services:

    # This section is needed to use volumes
    # ↓
    volumes:
      - a:/path1
      - b:/path2

# This section is needed to declare available volumes
# ↓
volumes:
  a:
  b:
...

I know that this could be somehow scattered and I know Docker could handle it differently in another universe, and I know that the error message can cause confusion, but at the moment it works in this way.

Let me know if this was your problem.

More info:

https://docs.docker.com/storage/volumes/#use-a-volume-with-docker-compose

Nunez answered 8/6, 2022 at 14:59 Comment(0)
F
4

I had volumes: - etc/config.cfg:/etc/config.cfg

That was fixed by adding ./ in front of the file path:

volumes:
 - ./etc/config.cfg:/etc/config.cfg
Fornof answered 2/5 at 19:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.