Как создавать и использовать тома Docker в основном веб-приложении Asp (MVC) - PullRequest
0 голосов
/ 24 мая 2019

У меня есть веб-приложение, и я использую Docker для его развертывания на сервере Linux. Я использую ASP .NET CORE 2.1, модель MVC для своего приложения, и я публикую ее через интегрированный контейнер Visual Studio для регистрации докеров. со своего сервера я вытаскиваю образ, а затем запускаю его. Проблема в том, что каждый раз, когда я публикую обновление для своего приложения, оно сбрасывает все файлы в приложении, как и должно быть, именно так работают контейнеры. Но мне нужно, чтобы некоторые файлы оставались на сервере, а не сбрасывались каждый раз, когда я обновляю свое приложение, поэтому мне нужно использовать тома. Но я не могу понять, как использовать приложения ASP CORE и тома докера, я думаю, что могу их создать, но как получить к ним доступ из приложения?

Я пробовал некоторые методы, которые я нашел в сети,

Так что обычно я запускаю докер, я вытаскиваю его из hub.docker с помощью: docker pull mydockerid/appname:tag

Затем запустите его командой: docker run -p 3000:80 mydockerid/appname:tag и это все.

Я пробовал: docker run -p 3000:80 -v ~mnt/files/xml:/xml mydockerid/appname:tag

Как я понял, докер должен использовать папку сервера, "mnt / files / xml", в качестве папки в моем приложении с именем "xml", но не работает.

Я также использую Digital ocean, а каталог "mnt / files / xml" - это том, связанный с дроплетом.

Идеальным решением было бы создание тома докера внутри тома капель, но на самом деле любое работающее решение было бы замечательно!

Спасибо за помощь!

1 Ответ

0 голосов
/ 28 мая 2019

Хорошо, поэтому я был близко,

Чтобы создать том в Docker, вам нужно выбрать каталог на сервере и папку из приложения. проблема для меня была, я показываю неправильный каталог в приложении. Поскольку в контейнере Docker, скажем, корневая папка находится в / app / root, как и моя папка xml, все, что мне нужно было исправить, это использовать docker run -p 3000:80 -v ~mnt/files/xml:/app/xml mydockerid/appname:tag вместо docker run -p 3000:80 -v ~mnt/files/xml:/xml mydockerid/appname:tag, первый каталог всегда с сервера, а второй всегда из приложения.

Что касается объемов в цифровом океане:

Перейти к томам под управлением слева. Нажмите кнопку Создать громкость в правом верхнем углу. Выберите конфигурацию тома, затем прикрепите ее к капле.

чтобы смонтировать его:

$ mkdir -p /mnt/files 

# Mount your volume at the newly-created mount point:
$ mount -o discard,defaults,noatime /dev/disk/by-id/scsi-0DO_volume_name /mnt/files 

# Change fstab so the volume will be mounted after a reboot
$ echo '/dev/disk/by-id/scsi-0DO_volume_name /mnt/files ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Digital Ocean на самом деле покажет все эти команды с именами ваших томов, если вы перейдете в раздел «Инструкция по настройке» в разделе «Дополнительно» на томе.

Затем, поскольку мой том DO монтируется в / mnt / files, я подключаюсь к серверу через filezila, помещаю необходимые файлы в папку с именем "xml" и запускаю контейнер докера с docker run -p 3000:80 -v ~mnt/files/xml:/xml mydockerid/appname:tag, теперь все, что находится в папке xml на сервере , будет прочитано в нем внутри моего приложения, папка с именем xml, и я могу обновить приложение, и папка никогда не потеряет данные. Также я могу переместить этот том DO в другую каплю DO без потери данных.

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