Невозможно подключиться к экземпляру Rabbit MQ при запуске из контейнера Docker, созданного Dockerfile - PullRequest
0 голосов
/ 22 ноября 2018

Мы пытаемся поместить экземпляр rabbit mq в нашу среду Kubernetes.Для этого мы должны внедрить его в процесс сборки и выпуска, который включает в себя создание контейнера Docker с помощью Dockerfile.

Во время нашего первоначального тестирования мы создали контейнер Docker вручную с помощью следующих команд, и он работалправильно:

docker pull rabbitmq
docker run -p 5672:5672 -d --hostname my-rabbit --name some-rabbit rabbitmq:3
docker start some-rabbit

Чтобы создать наш файл Docker, мы пробовали различные итерации, с последним из них:

FROM rabbitmq:3 AS rabbitmq
RUN rabbitmq-server -p 5672:5672 -d --hostname my-rabbit --name some-rabbit 
EXPOSE 5672

Мы также пробовали это только с сервером Run rabbitmq-server ине дополнительные параметры.

Это создает экземпляр mq rabbit, в который мы можем войти в ssh и убедиться, что он запущен, но когда мы пытаемся подключиться к нему, мы получаем ошибку: «ExtendedSocketException: попыткабыл сделан, чтобы получить доступ к сокету способом, запрещенным его разрешением доступа "(мы используем кролика по умолчанию 5672).

Я не уверен, что различия могут быть между тем, что мы сделали в командеи что было сделано в Dockerfile.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Dockerfile используется для создания собственного образа, а не для запуска контейнера.Вопрос в том, зачем вам нужно создавать свое собственное изображение rabbitmq?Если нет - просто используйте официальное изображение rabbitmq (как вы делали изначально).Я уверен, что он уже имеет все необходимые директивы EXPOSE. Также обратите внимание на аргументы командной строки "-p 5672: 5672 -d --hostname my-rabbit --name some-rabbit rabbitmq: 3" передаются демону docker,не к кроличьему процессу.Если вы хотите убедиться, что вы перенаправляете все необходимые порты - просто запустите его с -P.

0 голосов
/ 22 ноября 2018

Похоже, вам нужно предоставить довольно много других портов.

Я смог сгенерировать команды Dockerfile для rabbitmq:latest (rabbitmq:3 выглядит так же), используя this :

ENV PATH=/usr/lib/rabbitmq/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin    
ENV GOSU_VERSION=1.10    
ENV RABBITMQ_LOGS=-   
ENV RABBITMQ_SASL_LOGS=-   
ENV RABBITMQ_GPG_KEY=0A9AF2115F4687BD29803A206B73A36E6026DFCA 
ENV RABBITMQ_VERSION=3.7.8   
ENV RABBITMQ_GITHUB_TAG=v3.7.8
ENV RABBITMQ_DEBIAN_VERSION=3.7.8-1
ENV LANG=C.UTF-8   
ENV HOME=/var/lib/rabbitmq    
EXPOSE 25672/tcp  
EXPOSE 4369/tcp
EXPOSE 5671/tcp
EXPOSE 5672/tcp
VOLUME /var/lib/rabbitmq
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["rabbitmq-server"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...