5

Im 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.
      - SEAFILE_ADMIN_EMAIL=me@example.com  # Specifies Seafile admin user, default is 'me@example.com'.
      - 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:
Besworks
  • 4,123
  • 1
  • 18
  • 34
Luxadev
  • 51
  • 1
  • 2

1 Answers1

6

If you see the error "no declaration was found in the volumes section" - probably you are not declaring the volumes from the root section.

The error message can cause confusion.

Here a description of how it works:

...
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, 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

Valerio Bozz
  • 1,176
  • 16
  • 32