Синтаксис docker-compose.yml для именованных томов - PullRequest
0 голосов
/ 15 октября 2018

Что такое синтаксис docker-compose.yml для указания пути к хосту именованного тома?

docker-compose.yml:

volumes:
  myvolume:  # how do I specify path here?
  othervolume:

services: # etc...

Я проверил документы , но я не могу его найти.Честно говоря, я не знаю, как кто-то использует этот материал.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Обычный сценарий создания томов - использовать именованный том по умолчанию, который сопоставляется с драйвером локального тома и помещает тома в / var / lib / docker / volume.Не то, что вы ищете, но это простой вариант для многих:

version: '3'
volumes:
  myvolume:
  othervolume:    
services:
  myservice:
    volumes:
      - myvolume:/volume/path

Обычный метод для сопоставления тома хоста - указать путь напрямую, имя для тома не требуется.Опять же, не то, что вы просите, но это очень легко реализовать.Это подключаемое монтирование под крышками:

version: '3'
services:
  myservice:
    volumes:
      - ./path:/volume/path

Если вы хотите именованный том и хост-том вместе, то вам нужен именованный том, настроенный для использования связывания.Недостатком этого является сбой, если каталог не существует, но есть и то, что докер может инициировать пустой каталог для содержимого образа.

version: '3'
volumes:
  myvolume:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /host/path/to/volume
services:
  myservice:
    volumes:
      - myvolume:/container/volume/path

Обратите внимание, недостатком bind mounts является то, что онразмещает файлы, которые управляются контейнерами, с помощью uid / gid из контейнера, внутри пути, который, вероятно, используют другие пользователи на хосте, часто с другим uid / gid на хосте.В результате возникают проблемы с разрешениями на хосте или внутри контейнера.Вам нужно выровнять uid / gid между двумя, чтобы избежать этого.

0 голосов
/ 15 октября 2018

В тех же справочных документах вы можете проверить полную расширенную версию примера docker-compose.yml

https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples

См. Раздел БД для установки именованного тома.

  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
    deploy:
      placement:
        constraints: [node.role == manager]
...