Docker образ, монтирующий существующий том данных для nexus - PullRequest
0 голосов
/ 16 апреля 2020
  1. Я добавил новые репозитории на Nexus 3.17. Нет данных, только репозитории.
  2. Создано .bak файлов
  3. Создано docker изображение для Nexus (назовите его newimage).

У меня есть данные из текущей версии (3.3.1) на томе, и я хочу, чтобы данные отображались в новом соединении. Когда я пытаюсь выполнить команду ниже docker run и go для nexus, новые репозитории не отображаются, но есть данные для старых репозиториев.

docker run -d -p 8081:8081 --name nexus -v <local-docker-volume>:/nexus-data newimage

Dockerfile I использовать для создания изображения

FROM sonatype/nexus3:3.17.0  
COPY path-to-bak-files/*.bak /nexus-data/restore-from-backup/

Есть идеи, что я делаю неправильно?

ps: дайте мне знать, если я не ясен.

1 Ответ

1 голос
/ 18 апреля 2020

Согласно вашему dockerfile вы копируете содержимое в /nexus-data/restore-from-backup/, но во время работы контейнера вы монтируете существующий том в /nexus-data, что в итоге маскирует каталог /nexus-data в файловой системе внутри контейнера (куда вы добавили данные при создании образа).

Важно отметить, что при монтировании операции при монтировании другого диска / общего ресурса (в данном случае тома) в существующий каталог в вашей файловой системе (FS) вы можете ' больше не можете получить доступ к директории с вашего FS. Таким образом, когда вы создали docker образ, вы добавили некоторые файлы в / nexus-data / restore-from-backup /, но когда вы смонтировали том в / nexus-data, вы смонтировали его поверх dir в вашей FS, поэтому вы не можете просмотрите файлы с вашего FS.

Чтобы решить эту проблему, вы можете сделать следующее:

  • добавить данные в другое место в файле dockerfile, скажем location1
  • создать контейнер с монтированием тома, как вы сейчас делаете
  • использовать команду точки входа ИЛИ, чтобы скопировать файлы из location1 в /nexus-data/restore-from-backup/
...