Как 2 volume в одну директорию указать в Docker?

Ссылка скопирована
2 ответов

У меня есть сайт в директории /var/www/html и есть модули, которые необходимо подключить, модули ссылаются так же в директорию /var/www/html, возможно ли через docker подключить 2 volume в одну директорию?

app:     restart: always     container_name: "app"     build:       context: .       dockerfile: ./docker/app     ports:       - "8023:8023"     volumes:       - './app:/var/www/html'       # Tasks Module       - './modules/tasks:/var/www/html'

app: restart: always container_name: "app" build: context: . dockerfile: ./docker/app ports: - "8023:8023" volumes: - './app:/var/www/html' # Tasks Module - './modules/tasks:/var/www/html'

Дополнительно:

а как вы себе это представляете в файловой структуре, если бы не было докера?

  • Виктор,
    module/
    ├── admin/
    │ ├── controller/
    │ │ ├── common/
    │ │ │ └── ...
    │ │ └── modules/
    │ │ └── ...
    │ ├── model/
    │ │ ├── modules/
    │ │ │ └── ...
    │ │ └── ...
    │ └── view/
    │ ├── modules/
    │ │ └── ...
    │ └── ...
    └── catalog/
    ├── controller/
    │ ├── modules/
    │ │ └── ...
    │ └── ...
    ├── model/
    │ ├── modules/
    │ │ └── ...
    │ └── ...
    └── view/
    ├── modules/
    │ └── ...
    └── ...

    app:
    ├── admin/
    │ ├── controller/
    │ ├── language/
    │ ├── model/
    │ ├── view/
    │ ├── config.php
    │ ├── index.php
    │ └── ...
    ├── catalog/
    │ ├── controller/
    │ ├── language/

  • evgenin, ну так и подключите их к
    ./app:/var/www/html/app

    ./modules/tasks:/var/www/html/module

  • Drno, модули имеют структуру похожую на app, не могу подключить в отдельной папке
  • В данный момент подключаю по файлам, но может есть какое-то решение
    # Tasks Module - ./modules/tasks/catalog/controller/api/modules/tasks.php:/var/www/html/catalog/controller/api/modules/tasks.php - ./modules/tasks/catalog/model/api/modules/tasks.php:/var/www/html/catalog/model/api/modules/tasks.php

    # Tasks Module - ./modules/tasks/catalog/controller/api/modules/tasks.php:/var/www/html/catalog/controller/api/modules/tasks.php - ./modules/tasks/catalog/model/api/modules/tasks.php:/var/www/html/catalog/model/api/modules/tasks.php

    Потому что файлов может быть много, картинки, css, js скрипты, и все файлы подключать каждый раз не прикольно

  • evgenin, меняйте структуру, либо сгружайте app и модули в 1 папку.. и оттуда монтируйте
  • evgenin,

    модули имеют структуру похожую на app, не могу подключить в отдельной папке

    но в примере файловой структуры вы подключили их отдельных папках. Поправьте пример.

  • Виктор, поправил
  • evgenin, что поправил? не должно быть никакого двоеточия. Вот есть некая папка /var/www/html. Как в ней должны лежать файлы?
  • evgenin, так отмечайте решением:

    Как 2 volume в одну директорию указать = никак

  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Юрий Linux Ответ

    Для того чтобы указать два тома в одну директорию в Docker, вам нужно создать два разных тома и затем примонтировать их в одну общую директорию. Это можно сделать следующим образом:

    1. Создайте два тома, например, volume1 и volume2, используя команду docker volume create:

       docker volume create volume1
       docker volume create volume2

    docker volume create volume1 docker volume create volume2

    2. Запустите контейнер, указав оба тома при помощи флага -v:

       docker run -d -v volume1:/path/to/directory -v volume2:/path/to/directory your_image_name

    docker run -d -v volume1:/path/to/directory -v volume2:/path/to/directory your_image_name

    3. Теперь оба тома будут примонтированы в одну директорию /path/to/directory внутри контейнера.

    Таким образом, вы можете указать два volume в одну директорию в Docker, что позволит вам легко управлять данными и конфигурациями внутри контейнера. Не забудьте заменить your_image_name на имя вашего образа Docker.

    Другие ответы (1) Ответить на вопрос
    Павел Админов

    Для того чтобы указать два volume в одну директорию в Docker, вам необходимо использовать опцию -v или --volume при запуске контейнера.

    Пример команды для запуска контейнера с указанием двух volume в одну директорию выглядит следующим образом:

    docker run -v /путь/к/первому/директорию:/место/для/первого/volume -v /путь/к/второму/директорию:/место/для/второго/volume название_образа

    docker run -v /путь/к/первому/директорию:/место/для/первого/volume -v /путь/к/второму/директорию:/место/для/второго/volume название_образа

    Где:
    - /путь/к/первому/директорию - это путь к первой директории на вашем хосте, которую вы хотите примонтировать как первый volume
    - /место/для/первого/volume - это путь внутри контейнера, куда будет примонтирован первый volume
    - /путь/к/второму/директорию - это путь ко второй директории на вашем хосте, которую вы хотите примонтировать как второй volume
    - /место/для/второго/volume - это путь внутри контейнера, куда будет примонтирован второй volume
    - название_образа - это название образа, на основе которого будет запущен контейнер

    Таким образом, при запуске контейнера с указанием двух volume в одну директорию, вы сможете обеспечить доступ к обоим директориям изнутри контейнера, что может быть полезно для различных приложений и сервисов, требующих доступа к различным данным или файлам.

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно