Отказ от ответственности: я не эксперт в Event Store . Могут быть особенности, специфичные для Event Store, которые делают его менее подходящим для запуска из контейнера, о котором я не знаю.
В общем, вы можете «докеризировать» большинство сервисов, и они могут одинаково хорошо работать как сервис, который изначально запускается на сервере.
Вещи, которые нужно знать:
- где вы храните свои данные
- где вы храните ваши файлы конфигурации
- какая производительность требуется
- как насчет безопасности
Данные : из-за способа запуска контейнера в примере ваши данные будут «внутри» контейнера. Удалите или обновите контейнер, и ваши данные исчезнут навсегда.
Чтобы сделать ваши данные постоянными, используйте тома данных или контейнеры томов данных . Они хранят ваши данные на хосте (их Dockerfile уже поддерживает их, см. VOLUME
).
Существуют также решения для хранения данных, которые позволяют удаленно обращаться к данным с помощью плагинов для томов .
Файлы конфигурации : та же история, что и для ваших данных. Вы можете сохранить свои конфигурационные файлы в томе данных (контейнере) или передать их через Dockerfile (как они сделали в своем Dockerfile).
Производительность : при использовании Docker и нативной производительности в некоторых ситуациях может наблюдаться небольшое снижение производительности. См. Https://stackoverflow.com/q/21889053/4459346.
Безопасность : из-за способа запуска контейнера в примере хранилище событий будет отображаться на хост-компьютере. Любой может получить к ним доступ извне. Чтобы они оставались локальными для хоста -p 127.0.0.1:1113:1113
.
В компании, в которой я работаю, я настроил mysql
сервер в контейнере. Данные и файлы конфигурации «хранятся» в контейнере тома данных. Я также настроил задание cron, которое запускает другой контейнер для резервного копирования mysql
данных на хост.
Многие приложения (также «докеризованные») успешно используют mysql
этот способ. Мы не видели никакой разницы с бегом в mysql
естественных условиях. Может быть более 50 пользователей одновременно.