Относительные пути Docker Compose против тома Docker

У меня есть файл docker compose для веб-сайта, который среди множества других контейнеров для различных целей включает базу данных mysql, которая будет иметь постоянные данные. На данный момент файл набора указывает относительный путь для данных, например:

 
mysql: 
  image: mysql:5.7
  container_name: sqldb
  volumes:
   - ./mysql_data/_data:/var/lib/mysql

и структура папок:

 --mysql_data
 --static_content
 docker-compose.yml

Это означает, что в любой момент я могу переместить весь сайт (включая постоянное содержимое) на другой сервер, скопировав всю папку и запустив docker-compose up.

Но, читая о томах докеров, похоже, что это предпочтительный метод (плюс относительные пути монтирования привязки, похоже, не поддерживаются с помощью "docker run", но работают в компоновке), поэтому мне интересно, нужно ли мне изменить этот подход на использовать тома? Что-то не так в этом подходе относительного связывания? Если я переключусь на тома, при перемещении контейнеров мне придется вручную перемещать тома (например, этот метод Как перенести тома, содержащие только данные, с одного хоста на другой?)?


person statts    schedule 24.10.2017    source источник
comment
Этот подход отлично подходит для создания кейсов, но не в режиме роя. Вы также можете указать именованные тома с указанием пути клиента в качестве пути к папке для работы в режиме роя. Теперь не нужно сильно беспокоиться о беге.   -  person Jinna Balu    schedule 24.10.2017


Ответы (1)


Сохранение данных в Docker

Есть четыре возможных варианта монтирования любого тома:

  1. Относительный путь
  2. Абсолютный Путь
  3. Путь к тому Docker по умолчанию
  4. Том Docker с абсолютным путем

Вот пример выше:

version: '3'
services:
    sample:
        image: sample
        volumes:
            - ./relative-path-volume:/var/data-two
            - /home/ubuntu/absolute-path-volume:/var/data-one
            - docker-volume-default-path-volume:/var/data-three
            - docker-volume-absolute-path-volume:/var/data-four
volumes:
  docker-volume-default-path-volume: {}
  docker-volume-absolute-path-volume:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /home/path/of/your/folder

Относительный путь: ./relative-path-volume:/var/data-two

Абсолютный путь: /home/ubuntu/absolute-path-volume:/var/data-one

Путь к тому Docker по умолчанию: docker-volume-default-path-volume:/var/data-three

Том Docker с абсолютным путем: docker-volume-absolute-path-volume:/var/data-four

Это работает для любого сервера, поскольку мы настраиваем свойство устройства тома на соответствующий путь к каталогу.

person Jinna Balu    schedule 24.10.2017
comment
Привет, Джинна, спасибо за это, но не будет ли у этого проблем с переносимостью с разными структурами папок, возможно, в разных средах? Я знаю, что в любом случае могу докерть тома, но думал, что привязка относительного пути имеет преимущество переносимости (хотя я не рассматривал Swarm, что определенно является хорошим моментом ...) - person statts; 25.10.2017
comment
Хорошие вещи, спасибо! Это отлично подходит для настройки локальных вещей для личного использования и т. Д. - person Hatem Jaber; 27.01.2021