docker部署
安装rabbitmq
[root@shen ~]# docker search rabbitmq
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/rabbitmq RabbitMQ is an open source multi-protocol ... 3095 [OK]
启动rabbitmq
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq
进入容器启动managment插件(web管理)
root@46faab5c3001:/# rabbitmq-plugins enable rabbitmq_management
开启stomp
root@46faab5c3001:/# rabbitmq-plugins enable rabbitmq_web_stomp
Enabling plugins on node rabbit@46faab5c3001:
rabbitmq_web_stomp
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_stomp
rabbitmq_web_dispatch
rabbitmq_web_stomp
Applying plugin configuration to rabbit@46faab5c3001...
The following plugins have been enabled:
rabbitmq_stomp
rabbitmq_web_stomp
访问管理界面的地址就是 http://[宿主机IP]:15672,可以使用默认的账户登录,用户名和密码都guest,如:
http://10.1.252.30:15672/#/queues/%2F/hello2
设置durable=false
def testReceive(self):
# connection = pika.BlockingConnection(pika.ConnectionParameters(self.MQ_HOST))
connection = messagequeue.RabbitMQManager().get_conn()
channel = connection.channel()
channel.queue_declare(queue='hello2', durable=True)
https://www.jianshu.com/p/14ffe0f3db94
queue的生成:
consumer申明创建queue(front、msg-center)
publisher不能创建queue
Dockerfile、docker-compose、python脚本部署
FROM rabbitmq:3-management
ENV RABBITMQ_DEFAULT_USER=root
ENV RABBITMQ_DEFAULT_PASS=%tBqnWF1y3ku
EXPOSE 5671
EXPOSE 5672
EXPOSE 15672
EXPOSE 15674
RUN rabbitmq-plugins enable --offline rabbitmq_web_stomp
version: "3"
services:
web:
build: .
image: rabbitmq3-management
ports: ['5671:5671','5672:5672','15672:15672','15674:15674']
import re
import os
DOCKER_COMPOSE_IMAGE_NAME = "rabbitmq3-managment"
def stop_container():
p = os.popen('docker ps')
output = p.read()
# print(output)
pattern = re.compile(".*{}".format(DOCKER_COMPOSE_IMAGE_NAME))
try:
container_id = re.search(pattern, output).group().split()[0]
if not container_id:
return
p = os.popen('docker stop {}'.format(container_id))
output = p.read()
print("docker stop {}".format(output))
p = os.popen('docker rm {}'.format(container_id))
output = p.read()
print("docker rm {}".format(output))
except (AttributeError, ) as e:
print("stop_container: {}".format(str(e)))
def docker_compose():
p = os.popen('docker-compose up -d --build')
output = p.read()
print(output)
def docker_ps():
print("------------------")
docker_ps_cmd = 'docker ps|grep {}'.format(DOCKER_COMPOSE_IMAGE_NAME)
print(docker_ps_cmd)
p = os.popen(docker_ps_cmd)
output = p.read()
print(output)
if __name__ == "__main__":
stop_container()
docker_compose()
docker_ps()
生产环境部署:
用户、密码(业务端口、管理端口、stomp端口)
docker环境启动相关插件
集群