mikopbx / Core

Main repository! MikoPBX - is free, easy to setup PBX for small business based on Asterisk 16 core
https://www.mikopbx.com
GNU General Public License v3.0
366 stars 61 forks source link

Rewrite Docker documentation to use Docker Volumes instead folders #732

Closed jorikfon closed 2 weeks ago

jorikfon commented 4 months ago

При использовании Docker для управления настройками и данными контейнеров, у вас действительно есть несколько вариантов: монтирование директорий хоста, создание volumes, и использование отдельных контейнеров с volume. Каждый из этих вариантов имеет свои плюсы и минусы, и выбор оптимального подхода зависит от ваших конкретных потребностей и сценариев использования.

Варианты и их особенности:

Монтирование директорий хоста (bind mount):

Плюсы:

Минусы:

Создание volumes:

Плюсы:

Минусы:

Использование отдельных контейнеров с volumes:

Плюсы:

Минусы:

Рекомендация Для вашего случая, если необходимо иметь две папки /cf и /storage, наиболее оптимальным и переносимым вариантом будет использование volumes. Это обеспечивает лучшую управляемость и производительность.

Пример конфигурации

Можно использовать один volume для обеих папок. В Docker Compose это может выглядеть следующим образом:

version: '3.8'
services:
  your_service:
    image: your_image
    volumes:
      - data_volume:/cf
      - data_volume:/storage

volumes:
  data_volume:

Такой подход создаст один volume data_volume, который будет смонтирован в обе директории /cf и /storage внутри контейнера.

Пример с использованием Dockerfile и командной строки Если не используете Docker Compose, это можно сделать с помощью командной строки:

docker volume create data_volume
docker run -d --name your_container \
  -v data_volume:/cf \
  -v data_volume:/storage \
  your_image

Docker Compose файл:

version: '3.8'
services:
  your_service:
    image: your_image  # Image of your container
    volumes:
      - data_volume:/cf  # Mounting the volume to /cf
      - data_volume:/storage  # Mounting the same volume to /storage

volumes:
  data_volume:  # Defining the named volume

Команды для создания и запуска контейнера:

docker volume create data_volume  # Creating a named volume called data_volume

docker run -d --name your_container \
  -v data_volume:/cf  # Mounting the volume to /cf
  -v data_volume:/storage  # Mounting the same volume to /storage
  your_image  # Name of your image

Такой подход обеспечит, что ваши данные будут храниться в одном месте и будут доступны контейнеру в нужных директориях.

Надо проверить и переписать инструкции на Volumes

jorikfon commented 2 months ago

не работает