Можно ли в docker-compose повторно использовать конфигурацию тома между службами? - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь использовать настройку, подобную следующей:

version: '3.4'
x-my-volumes: &volumes
    - '../src:/var/www/src/:cached'
    - '../static:/var/www/static/:cached'
services:
  webserver:
    build: ./.docker/webserver
    volumes:
      - *volumes
      - './serverlogs/:/var/www/serverlogs/:delegated'
  node:
    build: ./.docker/node
    volumes:
      - *volumes

Я установил «общие» тома в разделе x-my-volumes и назначил ему привязку «томов», которые япопробуйте использовать в моих услугах.Но главное, что у сервисов есть другие тома, кроме общих.Это не работает, с ошибками типа "contains an invalid type, it should be an array" при выполнении docker-compose up.

Возможно ли это для docker-compose?Я понимаю, что могу просто скопировать и вставить тома для каждого сервиса в моем сценарии реального мира с его 10+ сервисами и 10+ томами, так что это очень уродливое дублирование.

1 Ответ

0 голосов
/ 26 июня 2019

Если массив томов между сервисами одинаков, вы можете сделать это:

version: '3.4'

services:
  webserver:
    volumes: &volumes
      - one:one
      - two:two

  node:
    volumes: *volumes

Если вы хотите расширить массив и добавить к нему элементы в некоторых службах, это не поддерживается в YAML, как указано этой проблемой GitHub и этим вопросом StackOverflow .


Возможно, чтобы дать вам другой подход для рассмотрения (хотя я не уверен, что это будет полезно для вашего случая использования):

Во многих моих докерских композициях я определяю «базовый» сервис, а затем я могу наследовать некоторые атрибуты этого сервиса другими сервисами, используя слияние YAML. Рассмотрим этот пример:

version: '3'

services:
  bash:
    build: .
    entrypoint: /bin/bash
    <<: &default
      image: dannyben/borg-client
      volumes:
        - one:one
        - two:two

  init:
    <<: *default
    command: init -e repokey-blake2

  backup:
    <<: *default
    command: create --stats --progress ::initial-backup /borg/source

Используя этот подход, я могу создавать сложные файлы docker-compose, выраженные в очень удобочитаемой форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...