Комментарии 12
Добрый день!
Спасибо за статью. Пробовал запускать в докере RabbitMQ, Apache Kafka и Nats. Наиболее удобным вариантом на мой взгляд является nats, тк там всего 1 докер образ + можно все необходимые конфигурации упаковать в .env файлы (что позволяет совмещать данные очереди с CI в gitlab/drone/woodpecker/etc).
# Unavailable in 3.9 and up
RABBITMQ_DEFAULT_PASS_FILE
RABBITMQ_DEFAULT_USER_FILE
Я так понял, именно вот эти переменные deprecated. Обычные RABBITMQ_DEFAULT_USER актуален ещё
В официальной доке ту, что ты указал именно эти переменные отсутствуют в списке deprecated и рекомендованы к использованию
Хм... Вроде бы и вправду. Но, по-моему, у меня он и без приставки "_FILE" кидал предупреждения в лог. Сейчас уже не уверен, но надо будет проверить. И, кстати, если ты прав, то поддержку "_FILE" очень легко самостоятельно вернуть на место кастомным Dockerfile - достаточно подменить исходный ENTRYPOINT как-то так или похоже:
FROM rabbitmq:latest
ENTRYPOINT \
RABBITMQ_DEFAULT_USER=`cat $RABBITMQ_DEFAULT_USER_FILE` \
RABBITMQ_DEFAULT_PASS=`cat $RABBITMQ_DEFAULT_PASS_FILE` \
<< старый ENTRYPOINT >>
Я такое уже делал для pgAdmin, который "secrets" от рождения не поддерживает. Пароли писать открытым текстом в "docker-compose.yml" у меня вызывает инстинктивную идиосинкразию, даже если речь идет об окружении чисто для разработки.
Секреты в docker-compose удобно хранить таким способом:
…
env_file:
- ./.env
В скрытом файле .env прописываются все секреты, а compose по умолчанию из коробки ищет этот файл и подхватывает из него все переменные. Это официально рекомендованный способ. При этом можно запретить доступ к контейнеру rebbitmq из вне, кроме других контейнеров в целях дополнительной безопасности.
./.env он все-таки несколько для другого. К тому же что, если мне туда надо поместить еще и переменные которые не секретные и я хочу хранить их, скажем, в git.
Насколько я знаю, официальный способ это хранить секреты в отдельных файлах и прописывать их в секции secrets
файла "docker-compose.yml":
version: "9.2"
services:
mongo:
image: mongo:latest
restart: always
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME_FILE: /run/secrets/mongo_username
MONGO_INITDB_ROOT_PASSWORD_FILE: /run/secrets/mongo_password
secrets:
- mongo_username
- mongo_password
secrets:
mongo_username:
file: ./secrets/mongo_username
mongo_password:
file: ./secrets/mongo_password
***$ mkdir secrets
***$ echo root > secrets/mongo_username
***$ echo 'zC4%&gWKdhE*yjP5' > secrets/mongo_password
***$ echo secrets/ >> .gitignore
Спасибо за статью. Какой метод подключения плагинов, например rabbitmq_web_stomp, порекомендуете?
Гигабиты прямо режут по глазам
Спасибо, но ожидал большего, например хотя-бы сетап кластера, даже если просто в docker-compose
в статье разобрано как поднимать единственный инстанс, хотелось бы посмотреть как таким способом разворачивать кластер
Как запускать RabbitMQ в Docker