it编程 > 前端脚本 > Erlang

【RabbitMQ】【Docker】基于docker-compose构建rabbitmq容器

161人参与 2024-07-28 Erlang

本文通过docker-compose构建一个单体的rabbtimq容器。

1,docker、docker-compose环境

首先需要有docker和docker-compose环境,docker安装[1],docker-compose安装[2]。

通过下列命令确定docker、docker-compose是否安装成功。

[root@192 gengzhihao]# docker version
client: docker engine - community
 version:           25.0.3
 api version:       1.44
 go version:        go1.21.6
 git commit:        4debf41
 built:             tue feb  6 21:17:10 2024
 os/arch:           linux/amd64
 context:           default

server: docker engine - community
 engine:
  version:          25.0.3
  api version:      1.44 (minimum version 1.24)
  go version:       go1.21.6
  git commit:       f417435
  built:            tue feb  6 21:16:08 2024
  os/arch:          linux/amd64
  experimental:     false
 containerd:
  version:          1.6.28
  gitcommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc:
  version:          1.1.12
  gitcommit:        v1.1.12-0-g51d5e94
 docker-init:
  version:          0.19.0
  gitcommit:        de40ad0

[root@192 bin]# docker-compose version
docker compose version v2.24.6

2,构建dockerfile,启动容器

docker-compose在/usr/local/bin里,我们就在/usr/local下构建一个docker-compose目录,里面再构建各级不同容器的目录,用于构建dockerfile和挂载目录[3]。

[root@192 bin]# cd /usr/local
[root@192 local]# ls
bin  docker-mount  etc  games  include  lib  lib64  libexec  mongodb  mycat  mysql  sbin  share  src
[root@192 local]# mkdir docker-compose
[root@192 local]# ls
bin             docker-mount  games    lib    libexec  mycat  sbin   src
docker-compose  etc           include  lib64  mongodb  mysql  share
[root@192 local]# cd docker-compose/
[root@192 docker-compose]# mkdir rabbitmq
[root@192 docker-compose]# cd rabbitmq/

在其中构建dockerfile

[root@192 rabbitmq]# vim docker-compose.yml

内容如下:

version: '3.1'
services:
  rabbitmq:
    restart: always
    image: daocloud.io/library/rabbitmq:3.8.8
    volumes:
      - ./data/:/var/lib/rabbitmq/
      - ./log/:/var/log/rabbitmq/log/
    ports:
      - 15672:15672
      - 5672:5672

启动rabbitmq的容器,curl其端口看一下是否正常返回amqp,docker ps看一下容器名字是什么,后面进入容器内部用得上。

[root@192 rabbitmq]# docker-compose up -d
[+] running 11/11
 ✔ rabbitmq 10 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0b/0b      pulled                                                    40.5s 
   ✔ 5d9821c94847 pull complete                                                                              25.6s 
   ✔ a610eae58dfc pull complete                                                                               0.4s 
   ✔ a40e0eb9f140 pull complete                                                                               0.4s 
   ✔ d691f0af2920 pull complete                                                                               1.3s 
   ✔ 53d0225d76e3 pull complete                                                                              31.4s 
   ✔ 7c993fe17403 pull complete                                                                               1.6s 
   ✔ 0d9ec409b148 pull complete                                                                              16.0s 
   ✔ 59a47a965242 pull complete                                                                              16.3s 
   ✔ e0f8eb2a167a pull complete                                                                              16.5s 
   ✔ 75f84d813186 pull complete                                                                              16.8s 
[+] running 1/2
 ⠴ network rabbitmq_default       created                                                                     1.4s 
 ✔ container rabbitmq-rabbitmq-1  started                                                                     1.3s 
#返回amqp为正常返回
[root@192 rabbitmq]# curl localhost:5672
amqp	[root@192 rabbitmq]# docker ps
container id   image                                command                   created              status              ports                                                                                                                                      names
39dc5f01ded3   daocloud.io/library/rabbitmq:3.8.8   "docker-entrypoint.s…"   about a minute ago   up about a minute   4369/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp   rabbitmq-rabbitmq-1

启动的时候,有的时候会报错,

error response from daemon: head "https://daocloud.io/v2/library/rabbitmq/manifests/3.8.8": get "https://daohub-auth.daocloud.io/auth?scope=repository%3alibrary%2frabbitmq%3apull&service=daocloud.io": net/http: request canceled (client.timeout exceeded while awaiting headers)

解决方法就是多试几次命令就好[4]。

3,进入容器,配置可视化界面

进入容器,进入其/opt/rabbitmq目录,其中plugins和sbin目录书我们需要注意的。进入容器时用到的容器名字,是docker ps时查看到的rabbitmq容器的名字。

[root@192 rabbitmq]# docker exec -it rabbitmq-rabbitmq-1 /bin/bash
root@39dc5f01ded3:/# cd /opt/rabbitmq/
root@39dc5f01ded3:/opt/rabbitmq# ls
install				license-bsd-base64js	     license-mit-flot	    license-mpl		  etc
license				license-bsd-recon	     license-mit-mochi	    license-mpl-rabbitmq  plugins
license-apache2			license-isc-cowboy	     license-mit-sammy	    license-erlcloud	  sbin
license-apache2-explorercanvas	license-mit-ejs		     license-mit-sammy060   license-httpc_aws	  share
license-apache2-excanvas	license-mit-ejs10	     license-mit-jquery     license-rabbitmq_aws
license-apl2-stomp-websocket	license-mit-erlware-commons  license-mit-jquery164  escript

进入plugins目录,可以看到一个 rabbitmq_management-3.8.8.ez,是可视化界面需要用到的脚本,复制rabbitmq_management,版本号不用记。

root@39dc5f01ded3:/opt/rabbitmq/plugins# ls
readme					    rabbitmq_federation-3.8.8.ez
accept-0.3.5.ez				    rabbitmq_federation_management-3.8.8.ez
amqp10_client-3.8.8.ez			    rabbitmq_jms_topic_exchange-3.8.8.ez
amqp10_common-3.8.8.ez			    rabbitmq_management-3.8.8.ez
amqp_client-3.8.8.ez			    rabbitmq_management_agent-3.8.8.ez
aten-0.5.5.ez				    rabbitmq_mqtt-3.8.8.ez
base64url-0.0.1.ez			    rabbitmq_peer_discovery_aws-3.8.8.ez
cowboy-2.6.1.ez				    rabbitmq_peer_discovery_common-3.8.8.ez
cowlib-2.7.0.ez				    rabbitmq_peer_discovery_consul-3.8.8.ez
credentials_obfuscation-2.2.0.ez	    rabbitmq_peer_discovery_etcd-3.8.8.ez
cuttlefish-2.4.1.ez			    rabbitmq_peer_discovery_k8s-3.8.8.ez
eetcd-0.3.3.ez				    rabbitmq_prelaunch-3.8.8.ez
gen_batch_server-0.8.4.ez		    rabbitmq_prometheus-3.8.8.ez
getopt-1.0.1.ez				    rabbitmq_random_exchange-3.8.8.ez
goldrush-0.1.9.ez			    rabbitmq_recent_history_exchange-3.8.8.ez
gun-1.3.3.ez				    rabbitmq_sharding-3.8.8.ez
jose-1.10.1.ez				    rabbitmq_shovel-3.8.8.ez
jsx-2.11.0.ez				    rabbitmq_shovel_management-3.8.8.ez
lager-3.8.0.ez				    rabbitmq_stomp-3.8.8.ez
observer_cli-1.5.4.ez			    rabbitmq_top-3.8.8.ez
prometheus-4.6.0.ez			    rabbitmq_tracing-3.8.8.ez
ra-1.1.6.ez				    rabbitmq_trust_store-3.8.8.ez
rabbit-3.8.8.ez				    rabbitmq_web_dispatch-3.8.8.ez
rabbit_common-3.8.8.ez			    rabbitmq_web_mqtt-3.8.8.ez
rabbitmq_amqp1_0-3.8.8.ez		    rabbitmq_web_mqtt_examples-3.8.8.ez
rabbitmq_auth_backend_cache-3.8.8.ez	    rabbitmq_web_stomp-3.8.8.ez
rabbitmq_auth_backend_http-3.8.8.ez	    rabbitmq_web_stomp_examples-3.8.8.ez
rabbitmq_auth_backend_ldap-3.8.8.ez	    ranch-1.7.1.ez
rabbitmq_auth_backend_oauth2-3.8.8.ez	    recon-2.5.1.ez
rabbitmq_auth_mechanism_ssl-3.8.8.ez	    stdout_formatter-0.2.4.ez
rabbitmq_aws-3.8.8.ez			    syslog-3.4.5.ez
rabbitmq_consistent_hash_exchange-3.8.8.ez  sysmon_handler-1.3.0.ez
rabbitmq_event_exchange-3.8.8.ez

去和plugins同级的sbin目录下,开启可视化界面

root@39dc5f01ded3:/opt/rabbitmq/plugins# cd ../sbin/
root@39dc5f01ded3:/opt/rabbitmq/sbin# ls
rabbitmq-defaults     rabbitmq-env	rabbitmq-queues  rabbitmq-upgrade
rabbitmq-diagnostics  rabbitmq-plugins	rabbitmq-server  rabbitmqctl
root@39dc5f01ded3:/opt/rabbitmq/sbin# ./rabbitmq-plugins enable rabbitmq_management
enabling plugins on node rabbit@39dc5f01ded3:
rabbitmq_management
the following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_prometheus
  rabbitmq_web_dispatch
applying plugin configuration to rabbit@39dc5f01ded3...
the following plugins have been enabled:
  rabbitmq_management

started 1 plugins.

这是在linux的浏览器中访问localhost:15672,即可看到可视化界面,账号密码都是guest。

在这里插入图片描述

参考资料:
[1],【docker】基于yum安装docker
[2],【docker】docker-compose安装
[3],rabbitmq.md
[4],

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

rabbit启动:Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces auth.erl

07-28

25道RabbitMQ面试题含答案(很全)

07-28

RabbitMQ 消息丢失的场景,如何保证消息不丢失?

07-28

RabbitMQ详解与实战(绝对足够惊喜)

07-28

RabbitMQ 安装分享

07-28

Ruby langchainrb gem and custom configuration for the model setup

07-28

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论