mac docker install software

目录

docker 安装

redis 安装

rabbitmq

mysql

nacos

方式一:

方式二:

验证

rocketmq

nameServer

broker

console

注意

测试

网页访问

pom依赖

消费者

生产者

mongodb


注意:以下所有的安装都是在开发环境作为测试使用,生产环境的安装配置要复杂很多

docker 安装

Redirecting…

redis 安装

docker search redis

docker pull redis

设置密码为 123456

docker run -itd --name redis-test -p 6379:6379 redis --requirepass 123456
docker exec -it redis-test /bin/bash

rabbitmq

docker search rabbitmq

docker pull rabbitmq

docker run -itd --name rabbitmqMy -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq

进入rabbitmq 的终端执行   

开启页面管理功能

rabbitmq-plugins enable rabbitmq_management

访问地址  localhost:15672

参数介绍:

docker run -d --name rabbitmqMy -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq

-d 后台运行容器;

--name 指定容器名;

-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);

-v 映射目录或文件;

--hostname  主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);

-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)

手动推送数据

mysql

docker pull mysql:8.0.11

mac m1 芯片下载的时候出现 

Using default tag: latest

latest: Pulling from library/mysql

no matching manifest for linux/arm64/v8 in the manifest list entries

解决方式:指定使用linux内核的镜像(m1芯片可以运行inter芯片的程序,但是所有指令的执行都需要进行一次转换,没有直接使用m1架构的软件速度快)

docker pull --platform linux/x86_64 mysql:8.0.20

注意,在启动的时候,需要指名 mysql 的版本,如果不指明则会自动下载最新的mysql版本

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.11

nacos

docker search nacos

docker pull nacos/nacos-server

nacos2.0的时候,需要开启 8848 和 9848 两个端口,百度了一下也没有具体的说明文章

方式一:

使用外置的数据库

https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql

nacos 初始化数据库

查看网卡信息 

ifconfig ent0

docker run -itd --name nacosStandAloneMysql -p 8848:8848 -p 9848:9848 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_DATABASE_NUM=1 \
-e MYSQL_SERVICE_HOST=192.168.44.119 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e TIME_ZONE='Asia/Shanghai' \
nacos/nacos-server

方式二:

使用内置数据库

不需要使用mysql数据库

docker run -itd --name nacosStandAlone -p 8848:8848 -p 9848:9848 \
-e MODE=standalone \
nacos/nacos-server

验证

http://localhost:8848/nacos/

rocketmq

docker search rocketmq

查看xxxxxxxxx镜像的版本信息

curl https://registry.hub.docker.com/v1/repositories/XXXXXXXXXXXX/tags | tr -d '[\[\]" ]' | tr '}' '\n' | awk -F: -v image='XXXXXXXXXXXX' '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}'
docker pull rocketmqinc/rocketmq:4.4.0

nameServer

启动 rockermq nameServer 设置内存大小为 64M 

docker run -itd --name rocketmqnamesrv -p 9876:9876 -e MAX_POSSIBLE_HEAP=100000000 -m 64m rocketmqinc/rocketmq:4.4.0 sh mqnamesrv

broker

创建rocketmq broker 的配置文件

mkdir -p /Users/yang/opt/rocketmq/conf

echo "brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
#宿主机ip地址
brokerIP1 = 192.168.0.102" > /Users/yang/opt/rocketmq/conf/broker.conf

创建rocketmq broker 容器,容器占用的最大内存为128M

docker run -itd --name rocketmqbroker -p 10911:10911 -p 10909:10909 --link rocketmqnamesrv:namesrv \
-v /Users/yang/opt/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
-e NAMESRV_ADDR=namesrv:9876 \
-e MAX_POSSIBLE_HEAP=100000000 \
-e autoCreateTopicEnable=true \
-e autoCreateSubscriptionGroup=true \
-e defaultTopicQueueNums=4 \
-m 128m \
rocketmqinc/rocketmq:4.4.0 \
sh mqbroker \
-c ../conf/broker.conf

console

docker pull styletang/rocketmq-console-ng

创建容器,容器占用的最大内存为 256M 

docker run -itd --name rocketmq-console -p 8080:8080 \
-e JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.0.102:9876  \
-e -Dcom.rocketmq.sendMessageWithVIPChannel=false \
-e MAX_POSSIBLE_HEAP=100000000 \
-m 256m \
styletang/rocketmq-console-ng

注意

上面的步骤只需要改动宿主机的地址,宿主机配置文件的路径调整为自己的路径,其他的内容 尽量不要进行改动

测试

网页访问

http://localhost:8080/

最主要的是看,这个地址有没有变为配置文件中设置的 宿主机 的 ip 地址

pom依赖

        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>4.4.0</version>
        </dependency>

消费者

import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;

import java.nio.charset.StandardCharsets;
import java.util.List;

public class RocketConsumer {

    public static void main(String[] args) throws Exception {
        // 实例化消息生产者,指定组名
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumerTest");
        // 指定Namesrv地址信息.
        consumer.setNamesrvAddr("localhost:9876");
        // 订阅Topic
        consumer.subscribe("TopicTest", "*");
        //负载均衡模式消费
        consumer.setMessageModel(MessageModel.CLUSTERING);
        // 注册回调函数,处理消息
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
                                                            ConsumeConcurrentlyContext context) {
                System.out.printf("%s Receive New Messages: %s %n",
                        Thread.currentThread().getName(), msgs.toString());
                for (MessageExt msg : msgs) {
                    System.out.println(new String(msg.getBody(), StandardCharsets.UTF_8));
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        //启动消息者
        consumer.start();
        System.out.printf("Consumer Started.%n");
    }

}

生产者

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;

public class AsyncProducer {
    public static void main(String[] args) throws Exception {
        // 实例化消息生产者Producer
        DefaultMQProducer producer = new DefaultMQProducer("RocketmqProducerTest");
        // 设置NameServer的地址
        producer.setNamesrvAddr("localhost:9876");
        // 启动Producer实例
        producer.start();
        producer.setRetryTimesWhenSendAsyncFailed(0);
        for (int i = 0; i < 10; i++) {
            final int index = i;
            // 创建消息,并指定Topic,Tag和消息体
            Message msg = new Message("TopicTest",
                    "Order",
                    "shangHai",
                    ("Hello world " + i + " !!!!!!").getBytes(RemotingHelper.DEFAULT_CHARSET));
            // SendCallback接收异步返回结果的回调
            producer.send(msg, new SendCallback() {
                @Override
                public void onSuccess(SendResult sendResult) {
                    System.out.printf("%-10d OK %s %n", index,
                            sendResult.getMsgId());
                }

                @Override
                public void onException(Throwable e) {
                    System.out.printf("%-10d Exception %s %n", index, e);
                    e.printStackTrace();
                }
            });
        }
        // 如果不再发送消息,关闭Producer实例。
//    	producer.shutdown();
    }
}

mongodb

docker search mongodb
docker pull mongo
docker run -itd --name mongo -p 27017:27017 mongo --auth

进入容器控制台

docker exec -it mongo mongo admin

创建登陆的用户,设置用户的权限,数据库为 admin ,用户 admin,密码 123456

db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});

验证添加的用户能否正常的登陆 

db.auth('admin', '123456')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值