Вo
На текущий момент осознал, что в контейнере я могу поднять экземпляр линукса с предустановленным ПО, включая моё приложение на node.js
При помощи docker-compose могу поднять в одной изолированной сети контейнеры последовательно: сначала базу данных с переменными среды, а потом и само приложение.
Для базы данных могу использовать монтируемые тома (volumes), где будут храниться записи моей базы
Если я где-то ошибся, то поправьте меня
У меня возникают следующие вопросы:
1. Если в качестве сервера я использую NGINX, то где мне его поднимать? На самой машине, либо его тоже собирать в контейнере, и каким-то образом все запросы перенаправлять в контейнер?
2. Если NGINX находится в контейнере, то как быть с сертификатами, которые устанавливаются для домена?
3.1. Как мне сохранить данные базы при переносе с 1 машины, на другую?
3.2. Как сохранить статические файлы (например аватарки пользователей, которые они загрузили, но они хранятся в папке на сервере)?
4. Можно ли настроить пайплайн, при котором у меня будут существовать 3 версии приложения: development, staging, release, работающие по следующему принципу:
На основе development образа на локальной машине мы 1 кнопкой собираем staging образ, который проходит unit тесты, далее он автоматически обновляется на сервере, после прохождения манульных тестов в staging на серваке мы нажимаем 2 кнопку (условно) и обновляем уже до release версии образа, который также автоматом выполнит сборку и запустится также на сервере?
Заранее выражаю огромную благодарность тем, кто поделится опытом, либо даст источники, где есть примеры с ответами на мои вопросы!