Сбрасывание контейнера с RabbitMQ в докере

#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.
 

Я решил эту проблему следующим образом:

  1. Создайте файл rabbitmq.conf в той же папке, в которой находится файл docker compose
  2. Поместите переменные туда в соответствии с рекомендациями и соглашением об именах отсюда. Что-то вроде:
     default_vhost = /
    default_user = user
    default_pass = bitnami
     
  3. В файле 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