Очень разумно запускать рабочие нагрузки без сохранения состояния в контейнерах и иметь отдельную неконтейнерную базу данных на голом железе или в облачной службе (, например, , AWS RDS), особенно на производстве.
Как вы заметили, жизненный цикл баз данных и контейнеров сильно отличается. Базы данных должны быть зарезервированы и доступны, а для традиционных реляционных баз данных сложно получить больше репликации, чем активная / резервная пара и, возможно, пассивная реплика чтения. Контейнеры предназначены для свободного уничтожения и замены, и типичные микросервисы на основе HTTP или очередей могут легко запускать несколько реплик.
Если вы посмотрите на вопросы переполнения стека, вы увидите много вещей, которые этого не делают. соответствуют производственным установкам. (Самое большое использование volumes:
для среды разработки в реальном времени; производственные контейнерно-ориентированные развертывания должны просто иметь возможность docker run
образа из репозитория без локального исходного кода или ресурсов.) Локальная база данных Программа установки подходит для этой категории, но это хорошая идея для среды разработки: вы можете использовать базу данных для каждого проекта, и они будут изолированы от других баз данных, и их легко сбросить, если что-то пойдет не так.