Простой способ установить RabbitMQ на Ubuntu Xenial (Ubuntu 16.04) - PullRequest
0 голосов
/ 26 июня 2018

Существуют ли четкие и краткие инструкции по созданию контейнера Docker с rabbitmq на Xenial, который действительно работает?

Я запускаю rabbitmq в контейнере Docker и по какой-то причине его установка является кошмаром.Каждый раз, когда Erlang или rabbitmq получают какое-либо обновление, одно становится несовместимым с другим, и у меня возникают проблемы с загадочной зависимостью.Страница установки rabbitmq не содержит пошаговых инструкций, и каждая перестановка, которую я пробовал, имеет какую-то ошибку (см. Последнюю версию ниже).

Dockerfile:

RUN  wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
RUN dpkg -i erlang-solutions_1.0_all.deb
RUN apt-get update
# Then install rabbitmq.
RUN echo "deb https://dl.bintray.com/rabbitmq/debian xenial main" | \
    tee /etc/apt/sources.list.d/bintray.rabbitmq.list && \
    wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | \
    apt-key add -

Загадочная ошибка rabbitmq:

=SUPERVISOR REPORT==== 26-Jun-2018::03:04:55.163161 ===
    supervisor: {local,'Elixir.Logger.Supervisor'}
    errorContext: start_error
    reason: noproc

Ответы [ 3 ]

0 голосов
/ 26 июня 2018

Чтобы прикрепить версию Erlang к той, которую в настоящее время поддерживает RabbitMQ, создайте /etc/apt/preferences.d/erlang, содержащую следующее:

Package: esl-erlang erlang*
Pin: version 1:20.3*
Pin-Priority: 999

(за https://askubuntu.com/a/926030/158095)

0 голосов
/ 27 июня 2018

Два ответа, опубликованные здесь, достойны восхищения, но они не отвечают на первоначальный вопрос: предоставьте Dockerfile, который устанавливает совместимые версии Erlang и rabbitmq.

Ниже приведено такое решение (потребовалось много проб и ошибок).).Он устанавливает Erlang 1: 20.3.6 и rabbitmq 3.7.6.Изменение версии требует только изменения последней строки этого Dockerfile.

# Install Erlang + Rabbitmq
# Install the erlang downloader
RUN wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && \
    dpkg -i erlang-solutions_1.0_all.deb
# Add the rabbitmq source list
RUN echo "deb https://dl.bintray.com/rabbitmq/debian xenial main" | \
    tee /etc/apt/sources.list.d/bintray.rabbitmq.list && \
    wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | apt-key add -
# Check which rabbitmq/erlang versions are compatible and isntall:
#       https://www.rabbitmq.com/which-erlang.html
RUN apt-get update && \
    apt-get install -y esl-erlang=1:20.3.6 rabbitmq-server=3.7.6-1
0 голосов
/ 26 июня 2018

Команда RabbitMQ отслеживает список рассылки rabbitmq-users и только иногда отвечает на вопросы по StackOverflow.


При установке с использованием пакетов Erlang Solutions, apt установитпоследняя версия Erlang, которую они предоставляют.На данный момент это версия 21, которая еще не поддерживается RabbitMQ .Вот почему вы получаете эту ошибку Elixir.

Если вы будете искать в rabbitmq-users списке рассылки строку Elixir.Logger.Supervisor, вы увидите это обсуждение , которое также объясняет причина этой проблемы .

Чтобы установить последнюю поддерживаемую версию Erlang в Ubuntu, apt требует, чтобы вы указали не только нужную версию метапакета, но и все зависимости с ихверсии.Это прискорбно, но это можно сделать, выполнив следующую команду:

apt-get install erlang-nox=1:20.3-1 \
    $(apt-cache show erlang-nox=1:20.3-1 | grep Depends | \
        tr ' ' '\n' | grep erlang | \
        grep -v erlang-base-hipe | tr -d ',' | sed 's/$/=1:20.3-1/')

См. Ответ Роджера, в котором говорится о пиннинге!

...