简体   繁体   English

docker-compose:卷部分未找到声明

[英]docker-compose: no declaration was found in the volumes section

Im trying to use Docker-Compose on Microsoft Windows to create a stack for Seafile.我正在尝试在 Microsoft Windows 上使用 Docker-Compose 为 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.部署错误无法部署堆栈:命名卷“C:/Users/Administrator/Docker/Volumes/Seafile/Mysql:/var/lib/mysql:rw”用于服务“db”但未在卷中找到声明部分。 : exit status 1 : 退出状态 1

Here's my problematic docker-compose.yaml file:这是我有问题的docker-compose.yaml文件:

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:

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 how to do it correctly:这里如何正确地做到这一点:

...
services:
    ...
    volumes:
      - a:/path1
      - b:/path2
    ...
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 current version it does it in this way: the root section declares the volume, while the services section just use them.我知道这可能会以某种方式分散并且我知道 Docker 可以在另一个宇宙中以不同的方式处理它,但在当前版本中它是这样处理的:根部分声明卷,而服务部分只使用它们。

Let me know if this was your problem.让我知道这是否是您的问题。

More info:更多信息:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM