【问题标题】:How to config volumes in docker-compose.yml?如何在 docker-compose.yml 中配置卷?
【发布时间】:2021-03-12 10:43:03
【问题描述】:

我猜这是一个非常简单的问题,但我找不到答案。 这是我的 docker-compose.yml

version: '3'
services:
  db:
    volumes:
      - db:/var/lib/mysql
volumes:
  db: 
  nextcloud:

问题是,我想在“volumes”中指定“db”或“nextcloud”的值,并在“Services”中引用它们。像这样

services:
  db:
    volumes:
      - db:/var/lib/mysql
  nextcloud:
    volumes:
      - nextcloud:/var/www/html
volumes:
  db: /home/roj/DataDisk/nextcloud-insecure/db
  nextcloud: /home/roj/DataDisk/nextcloud-insecure/disk

但我有问题ERROR: In file './docker-compose.yml', volume 'db' must be a mapping not a string.

我该如何解决?

【问题讨论】:

    标签: docker docker-compose yaml


    【解决方案1】:

    顶级volumes 部分不是为了指定安装,而是指定卷驱动程序配置(请参阅official documention)。 即。这是不正确的

    volumes:
      db: /home/roj/DataDisk/nextcloud-insecure/db # incorrect
      nextcloud: /home/roj/DataDisk/nextcloud-insecure/disk # incorrect
    

    如果您想将主机目录挂载到您的容器,您必须在您的servicesvolumes 部分中指定它,例如。

    services:
      db:
        volumes:
          - /home/roj/DataDisk/nextcloud-insecure/db:/var/lib/mysql
      nextcloud:
        volumes:
          - /home/roj/DataDisk/nextcloud-insecure/disk:/var/www/html
    

    有关更多信息,请参阅official documentation on services volumes

    【讨论】:

      【解决方案2】:

      您在外部volumes 指令中的语法不正确。

      如果要挂载到 docker 管理的卷,请执行以下操作:

      services:
        test:
          image: alpine
          volumes:
            - db:/app
      
      volumes:
        db:
      

      如果您想挂载到本地路径,请执行此操作(您可以将.:/app 中的点替换为任何其他本地路径,例如:/home/you:/server/path):

      services:
        test:
          image: alpine
          volumes:
            - .:/app
      

      如果它以点或斜线开头,则将其视为路径,否则将视为 docker 管理的命名卷。

      这些是常见的使用模式,但您可以阅读有关 volumes in compose 的更多信息以获取更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-23
        • 1970-01-01
        • 2019-01-31
        • 1970-01-01
        相关资源
        最近更新 更多