Как настроить тома в docker-compose.yml?

#docker #docker-compose #yaml

Вопрос:

Это очень простой вопрос, я думаю, но я не мог найти ответа. Это мой докер-compose.yml

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

Вопрос в том, что я хочу указать значение «db» или «nextcloud» в разделе «тома» и ссылаться на них в разделе «Службы».подобный этому

 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.

как я могу это исправить ?

Ответ №1:

Раздел верхнего уровня volumes предназначен не для указания монтирования, а для настройки драйвера тома (см. Официальную документацию по этому вопросу). т. е. это неверно

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

Если вы хотите смонтировать каталоги хостов в свой контейнер, вы должны указать это в volumes разделе вашего services , например.

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

Дополнительную информацию об этом см. в официальной документации по объемам услуг.

Ответ №2:

Ваш синтаксис во внешней volumes инструкции неверен.

Если вы хотите подключиться к тому, управляемому докером, выполните это:

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

volumes:
  db:
 

Если вы хотите подключиться к локальному пути, сделайте это (вы можете заменить точку на .:/app любой другой локальный путь, например: /home/you:/server/path ):

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

Если он начинается с точки или косой черты, он будет рассматриваться как путь, в противном случае как именованный том, управляемый докером.

Это распространенные шаблоны использования, но вы можете прочитать больше о томах в разделе compose для получения дополнительной информации.