我们正在尝试将Rabbit mq的实例放入我们的Kubernetes环境中。为此,我们必须在构建和发布过程中实现它,其中包括通过Dockerfile创建Docker容器。
在我们的原始测试期间,我们使用以下命令手动创建了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尝试了此操作,而没有使用其他参数。
这确实创建了一个我们可以通过SSH验证并正在运行的Rabbit MQ实例,但是当我们尝试连接到该实例时,会收到错误消息:“ ExtendedSocketException:试图访问一个MQ实例中的套接字。访问权限所禁止的方式”(我们使用Rabbit的默认值5672)。
我不确定在命令行中完成的操作与在Dockerfile中完成的操作之间可能会有什么区别。
答案 0 :(得分:1)
看起来您需要公开很多其他端口。
我能够使用this为rabbitmq:latest
(rabbitmq:3
看起来一样)生成Dockerfile命令:
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"]
答案 1 :(得分:0)
Dockerfile用于构建您自己的映像,而不是运行容器。问题是-为什么需要构建自己的Rabbitmq映像?如果您不这样做,则只需使用官方的rabbitmq图像即可(就像您最初那样)。 我确定它已经内置了所有必需的EXPOSE指令 另请注意,命令行参数“ -p 5672:5672 -d --hostname my-rabbit --name some-rabbit rabbitmq:3”被传递给docker守护程序,而不传递给Rabbitmq进程。 如果要确保转发所有必需的端口,请使用-P运行它。