skip to Main Content

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.
      - [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:

2

Answers


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

    Login or Signup to reply.
  2. 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
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search