#docker #rabbitmq
Вопрос:
Я пытаюсь запустить контейнер Docker с помощью RabbitMQ, в результате изображение загружается, но контейнер не запускается. Я получаю следующее сообщение в журналах:
error: RABBITMQ_DEFAULT_PASS is set but deprecated
error: RABBITMQ_DEFAULT_USER is set but deprecated
error: RABBITMQ_DEFAULT_VHOST is set but deprecated
error: RABBITMQ_ERLANG_COOKIE is set but deprecated
error: deprecated environment variables detected
Эта проблема появилась недавно, до этого все работало нормально и запускалось.
Это мой кролик-докер-композитор:
rabbit:
image: "rabbitmq:3-management"
hostname: "rabbit"
environment:
RABBITMQ_ERLANG_COOKIE: 'SWQOKODSQALRPCLNMEQGW'
RABBITMQ_DEFAULT_USER: 'user'
RABBITMQ_DEFAULT_PASS: 'bitnami'
RABBITMQ_DEFAULT_VHOST: '/'
ports:
- "15672:15672"
- "5672:5672"
labels:
NAME: "rabbitmq"
networks:
- postgres
Комментарии:
1. С официальной страницы rabbitmq dockerhub : » Переменные среды … ПРЕДУПРЕЖДЕНИЕ: Начиная с версии 3.9 RabbitMQ, все переменные, относящиеся к докеру, перечисленные ниже, устарели и больше не используются. Пожалуйста, используйте вместо этого файл конфигурации; посетите rabbitmq.com/configure чтобы узнать больше о файле конфигурации. Для начала изображения 3.8 распечатают файл конфигурации, сгенерированный на основе предоставленных переменных среды. … —
RABBITMQ_DEFAULT_PASS
… —RABBITMQ_DEFAULT_USER
»
Ответ №1:
Вы должны использовать следующие переменные среды:
DEFAULT_VHOST=/
DEFAULT_USER=user1
DEFAULT_PASS=pass1
видишь https://www.rabbitmq.com/configure.html для получения дополнительной информации.
Или используйте другие версии RabbitMQ, такие как 3.8:
rabbitmq:3.8-management
Ответ №2:
Последнее стабильное изображение докера для RabbitMQ (3.9) было недавно обновлено, и на официальной странице изображения говорится:
As of RabbitMQ 3.9, all of the docker-specific variables listed below are deprecated and no longer used.
Я решил эту проблему следующим образом:
- Создайте файл rabbitmq.conf в той же папке, в которой находится файл docker compose
- Поместите переменные туда в соответствии с рекомендациями и соглашением об именах отсюда. Что-то вроде:
default_vhost = / default_user = user default_pass = bitnami
- В файле docker compose вместо раздела среды поместите раздел томов и смонтируйте файл rabbitmq.conf по правильному пути (в зависимости от операционной системы, следуйте здесь). Для контейнера Linux это будет похоже:
rabbit: image: "rabbitmq:3-management" hostname: "rabbit" volumes: - "./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf" ports: - "15672:15672" - "5672:5672" labels: NAME: "rabbitmq" networks: - postgres
Комментарии:
1. Это, вероятно, лучше, чем мой ответ, поскольку он устраняет фактическую ошибку, а не возвращается к версии, когда она работала. Однако вся причина, по которой это произошло, заключается в том, что мы использовали 3-управление, что является просто плохой практикой для развивающегося проекта. Поэтому, я думаю, я бы добавил к вашему, что стоило бы заняться 3.9-управлением, как только проблема будет решена, чтобы избежать будущих изменений, которые будут добавлены извне. Понятия не имею, планируют ли они 3.10, прежде чем перейти на 4.0, и они, безусловно, могли бы изменить способ, которым это делается снова.
Ответ №3:
Линия
image: "rabbitmq:3-management"
В основном (я думаю) получает последнюю стабильную версию Rabbit, которая составляет 3.9, в которой эти переменные устарели. Если вы хотите продолжать использовать последнюю версию rabbit, вы должны использовать файл конфигурации. Учитывая, как вы, вероятно, использовали 3.8 до этого момента, я полагаю, что это больше работы, чем того стоит. Вместо этого вы можете использовать 3.8, изменив строку на:
image: "rabbitmq:3.8-management"
Переменные не являются устаревшими в этой версии и не будут выдавать эти ошибки.
Ответ №4:
Если кто-то использует только Dockerfile
ваш файл конфигурации , добавьте его в эту же папку и добавьте эту строку в свой Dockerfile
:
COPY ./rabbitmq.conf /etc/rabbitmq/rabbitmq.conf