docker安装MySQL、nacos、rocketmq等各类中间件
最近电脑重装了系统,所有环境都和从头开始安装了。
记录下以最简单的方式安装各种环境的操作,避免繁琐的额外步骤,持续更新中。
包括Win安装docker配置国内镜像源、docker安装rocketmq、MySQL、Redis、nacos等各类中间件。
目录
Windows安装docker
官网下载docker desktop:https://www.docker.com/

下载后双击安装即可。国内貌似登录不了了,也不需要登录,跳过即可。
添加配置国内镜像源,可选,默认国外镜像源可能无法访问
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com"
]

docker安装MySQL
推荐使用终端命令进行操作。
下载镜像,默认最新版
docker pull mysql
启动容器,设置容器名称my_mysql,root密码为123456
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name my_mysql mysql
只是简单的使用,就不需要设置挂载目录。
-d:detach,后台运行
-p:端口映射
-e:环境变量
docker安装Redis
下载镜像,默认最新版
docker pull redis
启动容器,设置容器名称my_redis,设置链接密码123456
docker run -d -p 6379:6379 --name my_redis redis redis-server --requirepass "123456"
docker安装nacos
下载镜像,默认最新版
docker pull nacos/nacos-server
默认使用Derby内嵌数据库,单机运行模式
docker run --name my_nacos_derby ^
-e MODE=standalone ^
-e NACOS_AUTH_TOKEN=YTZkYzIwNzg2Yzk4Mjg3ZmViY2JiODMyYWZhMGVmZDJhNmRjMjA3ODZjOTgyODdmZWJjYmI4MzJhZmEwZWZkMg== ^
-e NACOS_AUTH_IDENTITY_KEY=a6dc20786c98287febcbb832afa0efd2 ^
-e NACOS_AUTH_IDENTITY_VALUE=0d2366f384b6c702db8e9dd8b74534db ^
-p 8083:8080 ^
-p 8848:8848 ^
-p 9848:9848 ^
-d nacos/nacos-server
其中:token、key、value等可使用32位的随机字符串,token需要再base64编码得到
NACOS_AUTH_TOKEN: Nacos 用于生成JWT Token的密钥,使用长度大于32字符的字符串,再经过Base64编码。
NACOS_AUTH_IDENTITY_KEY: Nacos Server端之间 Inner API的身份标识的Key,必填。
NACOS_AUTH_IDENTITY_VALUE: Nacos Server端之间 Inner API的身份标识的Value,必填。
访问测试
http://127.0.0.1:8083/index.html
首次打开需初始化nacos密码,这里设置为nacos
nacos配置MySQL数据源
如果需要配置nacos数据源为MySQL
首先创建数据库,可取名nacos,初始化数据库脚本。
创建容器时指定mysql,并设置mysql连接信息
docker run --name my_nacos ^
-e MODE=standalone ^
-e SPRING_DATASOURCE_PLATFORM=mysql ^
-e MYSQL_SERVICE_HOST=host.docker.internal ^
-e MYSQL_SERVICE_PORT=3306 ^
-e MYSQL_SERVICE_DB_NAME=nacos ^
-e MYSQL_SERVICE_USER=root ^
-e MYSQL_SERVICE_PASSWORD=123456 ^
-e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&allowPublicKeyRetrieval=true" ^
-e NACOS_AUTH_TOKEN=YTZkYzIwNzg2Yzk4Mjg3ZmViY2JiODMyYWZhMGVmZDJhNmRjMjA3ODZjOTgyODdmZWJjYmI4MzJhZmEwZWZkMg== ^
-e NACOS_AUTH_IDENTITY_KEY=a6dc20786c98287febcbb832afa0efd2 ^
-e NACOS_AUTH_IDENTITY_VALUE=0d2366f384b6c702db8e9dd8b74534db ^
-p 8083:8080 ^
-p 8848:8848 ^
-p 9848:9848 ^
-d nacos/nacos-server
访问测试、初始化用户密码
http://localhost:8083/index.html
GitHub查看最新数据库脚本
https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql
脚本内容:
/******************************************/
/* 表名称 = config_info */
/******************************************/
CREATE TABLE `config_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) DEFAULT NULL COMMENT 'group_id',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) DEFAULT NULL COMMENT 'configuration description',
`c_use` varchar(64) DEFAULT NULL COMMENT 'configuration usage',
`effect` varchar(64) DEFAULT NULL COMMENT '配置生效的描述',
`type` varchar(64) DEFAULT NULL COMMENT '配置的类型',
`c_schema` text COMMENT '配置的模式',
`encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfo_datagrouptenant` (
`data_id`, `group_id`, `tenant_id`
)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = 'config_info';
/******************************************/
/* 表名称 = config_info since 2.5.0 */
/******************************************/
CREATE TABLE `config_info_gray` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`src_user` text COMMENT 'src_user',
`src_ip` varchar(100) DEFAULT NULL COMMENT 'src_ip',
`gmt_create` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_create',
`gmt_modified` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_modified',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`gray_name` varchar(128) NOT NULL COMMENT 'gray_name',
`gray_rule` text NOT NULL COMMENT 'gray_rule',
`encrypted_data_key` varchar(256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfogray_datagrouptenantgray` (
`data_id`, `group_id`, `tenant_id`,
`gray_name`
),
KEY `idx_dataid_gmt_modified` (`data_id`, `gmt_modified`),
KEY `idx_gmt_modified` (`gmt_modified`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 COMMENT = 'config_info_gray';
/******************************************/
/* 表名称 = config_tags_relation */
/******************************************/
CREATE TABLE `config_tags_relation` (
`id` bigint(20) NOT NULL COMMENT 'id',
`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`nid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识',
PRIMARY KEY (`nid`),
UNIQUE KEY `uk_configtagrelation_configidtag` (`id`, `tag_name`, `tag_type`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = 'config_tag_relation';
/******************************************/
/* 表名称 = group_capacity */
/******************************************/
CREATE TABLE `group_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '集群、各Group容量信息表';
/******************************************/
/* 表名称 = his_config_info */
/******************************************/
CREATE TABLE `his_config_info` (
`id` bigint(20) unsigned NOT NULL COMMENT 'id',
`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`op_type` char(10) DEFAULT NULL COMMENT 'operation type',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥',
`publish_type` varchar(50) DEFAULT 'formal' COMMENT 'publish type gray or formal',
`gray_name` varchar(50) DEFAULT NULL COMMENT 'gray name',
`ext_info` longtext DEFAULT NULL COMMENT 'ext info',
PRIMARY KEY (`nid`),
KEY `idx_gmt_create` (`gmt_create`),
KEY `idx_gmt_modified` (`gmt_modified`),
KEY `idx_did` (`data_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '多租户改造';
/******************************************/
/* 表名称 = tenant_capacity */
/******************************************/
CREATE TABLE `tenant_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = '租户容量信息表';
CREATE TABLE `tenant_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`kp` varchar(128) NOT NULL COMMENT 'kp',
`tenant_id` varchar(128) default '' COMMENT 'tenant_id',
`tenant_name` varchar(128) default '' COMMENT 'tenant_name',
`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`, `tenant_id`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin COMMENT = 'tenant_info';
CREATE TABLE `users` (
`username` varchar(50) NOT NULL PRIMARY KEY COMMENT 'username',
`password` varchar(500) NOT NULL COMMENT 'password',
`enabled` boolean NOT NULL COMMENT 'enabled'
);
CREATE TABLE `roles` (
`username` varchar(50) NOT NULL COMMENT 'username',
`role` varchar(50) NOT NULL COMMENT 'role',
UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);
CREATE TABLE `permissions` (
`role` varchar(50) NOT NULL COMMENT 'role',
`resource` varchar(128) NOT NULL COMMENT 'resource',
`action` varchar(8) NOT NULL COMMENT 'action',
UNIQUE INDEX `uk_role_permission` (`role`, `resource`, `action`) USING BTREE
);
docker安装rocketmq
官网:https://rocketmq.apache.org/zh/docs/
下拉镜像:配置文件路径指定了版本号,所以下拉指定版本
docker pul apache/rocketmq:5.3.2
创建共享网络,便于通信
docker network create rmq_network
启动nameserver
docker run -d -p 9876:9876 --name my_rmq_server --network rmq_network apache/rocketmq:5.3.2 sh mqnamesrv
代码中连接使用9876
rocketmq.name-server=localhost:9876
启动broker
本地某个目录下创建broker配置文件broker.conf:
namesrvAddr = host.docker.internal:9876
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# 0 means master other means slave
brokerId = 0
brokerIP1 = host.docker.internal
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# delete commit log at 04:00
deleteWhen = 04
fileReservedTime = 72
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
启动broker,指定配置文件映射(本地配置文件路径D:\\Cache\\Docker\\rocketmq\\broker.conf)
docker run -d -p 10912:10912 -p 10911:10911 -p 10909:10909 --name my_rmq_broker ^
--network rmq_network ^
-v D:\\Cache\\Docker\\rocketmq\\broker.conf:/home/rocketmq/rocketmq-5.3.2/conf/broker.conf ^
apache/rocketmq:5.3.2 sh mqbroker -c /home/rocketmq/rocketmq-5.3.2/conf/broker.conf
安装dashboard
docker run -d -p 8099:8080 --name my_rmq_dashboard --network rmq_network -e "JAVA_OPTS=-Drocketmq.namesrv.addr=host.docker.internal:9876" apacherocketmq/rocketmq-dashboard
访问dashboard,查看各种信息:

遇到的一些问题
docker运行容器时,报错access permissions.
PS C:\Users\Andy> docker run -d -p 8848:8848 -p 9848:9848 -e MODE=standalone --name my_nacos nacos/nacos-server
bd069c9c57002b7685004c10063d0acb202e1b0038902ac57de37f920f50b824
docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:9848 -> 127.0.0.1:0: listen tcp 0.0.0.0:9848: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
解决:重启winnat服务
net stop winnat
net start winnat
Windows11 运行多行命令
使用反斜线 \ 拼接的方式会一行行运行,可改为使用 ^ 拼接的方式
更多推荐
所有评论(0)