docker -составить тома синтаксиса для локального драйвера для монтирования файла - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь смонтировать файл (nginx .conf) в разделе volumes моего docker-compose.yml. Я могу смонтировать каталог как том без проблем, однако мне не ясно, каков синтаксис для файла.

В моем volumes разделе

volumes:
    roundcubeweb:
      driver: local
      driver_opts:
        type: none
        o: bind
        device: /mnt/docker/volumes/roundcube/html
    nginxconf:
      driver: local
      driver_opts:
        type: none    
        o: bind
        device: /mnt/docker/volumes/roundcube/nginx.conf
определено следующее

Позже у меня в разделе служб есть следующее:

nginx:
  image: nginx:latest
  deploy:
    replicas: 1
  restart: always
  depends_on: 
    - roundcube
  ports:
    - "8082:80"
  volumes:
    - roundcubeweb:/var/www/html
    - nginxconf:/etc/nginx/conf.d/default.conf

Когда я пытаюсь запустить это, я получаю следующую ошибку:

ОШИБКА: для roundcube_nginx_1 Невозможно создать контейнер для службы nginx: не удалось смонтировать локальный том: mount / mnt / docker /volumes/roundcube/nginx.conf:/var/lib/docker/volumes/roundcube_nginxconf/_data, флаги: 0x1000: не каталог

ОШИБКА: для nginx Невозможно создать контейнер для службы nginx: не удалось подключить локальный том: mount / mnt / docker / volume / rou ndcube / nginx .conf: / var / lib / docker / volume / roundcube_nginxconf / _data, флаги: 0x1000: не каталог ОШИБКА: обнаружены ошибки при запуске проекта.

Я обнаружил, что если я включаю расположение файла в nginx объявление объема раздела службы тогда это работает просто отлично. Например:

   volumes:  
    - roundcubeweb:/var/www/html  
    - /mnt/docker/volumes/roundcube/nginx.conf:/etc/nginx/conf.d/default.conf  

Можно ли смонтировать файл в разделе volumes? Есть ли ссылка на параметры локального драйвера?

1 Ответ

0 голосов
/ 07 апреля 2020

Я не думаю, что можно иметь отдельную Docker точку тома для указанного c файла, а не для каталога. Это может быть связано с проектом Docker о том, как тома управляются и монтируются (пытался найти do c или связанный фрагмент кода, но не смог найти)

local параметр драйвера, по-видимому, принять параметры, аналогичные Linux mount командам. Кажется, это подразумевается в Docker тома до c, хотя и не очень ясно:

локальный драйвер принимает параметры монтирования в виде списка через запятую в параметре o


Я обнаружил, что если я укажу расположение файла в объявлении тома раздела службы nginx, то это будет работать просто отлично. Например:

volumes:  
 - roundcubeweb:/var/www/html  
 - /mnt/docker/volumes/roundcube/nginx.conf:/etc/nginx/conf.d/default.conf 

В вашем примере вы используете Bind Mound вместо использования Volumes , который обрабатывается по-разному Docker и больше подходит для вашего случая использования локального файла в контейнере. Я думаю, что использование Bind Mount является подходящим решением в вашем случае.

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