当前位置:   article > 正文

Linux Docker安装 Docker-Compose安装 Docker安装Mysql8 Nacos OpenResty Redis Kafka ElasticSearch MinIO.._linux安装docker-compose

linux安装docker-compose

Docker安装

  1. #更新至最新的库
  2. yum update
  3. #安装Docker
  4. yum install docker
  5. #启动Docker
  6. systemctl start docker
  7. #开机启动Docker
  8. systemctl enable docker

Docker默认镜像源下载太慢,可以调整为国内镜像源

  1. #编辑配置文件
  2. vi /etc/docker/daemon.json
  3. #添加镜像地址信息
  4. {
  5. "registry-mirrors": [
  6. "http://hub-mirror.c.163.com",
  7. "https://docker.mirrors.ustc.edu.cn",
  8. "https://registry.docker-cn.com"
  9. ]
  10. }
  11. #重启Docker
  12. systemctl restart docker

为了验证是否切换成功,可以使用docker info查看,会显示如下信息:

  1. Registry Mirrors:
  2. http://hub-mirror.c.163.com
  3. https://docker.mirrors.ustc.edu.cn
  4. https://registry.docker-cn.com

Docker-Compose安装

安装Docker-Compose,这里下载的是最新版本v2.5.0,安装流程如下:

  1. #下载安装文件,其中uname -s是获取系统内核,uname -m获取系统版本,所以最后其实是下载docker-compose-Linux-x86_64
  2. sudo curl -L https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  3. #添加可执行权限
  4. sudo chmod +x /usr/local/bin/docker-compose
  5. #检查版本,是否安装成功
  6. docker-compose --version

MySQL8安装

  1. docker run -d -i \
  2. --name mysql \
  3. -v /home/mysql/datadir:/var/lib/mysql \
  4. -v /home/mysql/conf.d:/etc/mysql/conf.d \
  5. -v /etc/localtime:/etc/localtime \
  6. --privileged=true \
  7. -p 3306:3306 \
  8. -e MYSQL_ROOT_PASSWORD=root \
  9. --restart=always \
  10. mysql:8.0

修改密码:

  1. #进入容器
  2. docker exec -it mysql /bin/bash
  3. #登录mysql
  4. mysql -u root -p
  5. #修改登录权限
  6. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

select NOW()时间如果小了8小时,执行如下操作同步时区即可:

  1. docker cp /usr/share/zoneinfo/Asia/Shanghai mysql:/usr/share/zoneinfo/Asia
  2. docker exec -it mysql bash
  3. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  4. docker restart mysql

如果要安装MySQL5.7,可按照如下安装流程执行:

  1. docker run -it --name mysql -d \
  2. -p 3306:3306 --restart=always \
  3. -e MYSQL_ROOT_PASSWORD=123456 \
  4. mysql:5.7

Nacos安装

安装Nacos,默认采用的是Derby数据库存储,如果想用MySQL存储,需要先获取SQL脚本,并创建数据库,我们可以下载安装包获取SQL脚本,将conf/nacos_config.sql导入数据库即可。

下载地址:Releases · alibaba/nacos · GitHub

安装脚本:

  1. docker run -d \
  2. -e MODE=standalone \
  3. -e SPRING_DATASOURCE_PLATFORM=mysql \
  4. -e MYSQL_SERVICE_HOST=192.168.211.130 \
  5. -e MYSQL_SERVICE_PORT=3306 \
  6. -e MYSQL_SERVICE_USER=root \
  7. -e MYSQL_SERVICE_PASSWORD=123456 \
  8. -e MYSQL_SERVICE_DB_NAME=nacos_config \
  9. -p 8848:8848 \
  10. --restart=always \
  11. --name nacos nacos/nacos-server:v2.1.0

OpenResty安装

安装OpenResty需要先安装相关依赖库:

yum install libtermcap-devel ncurses-devel libevent-devel readline-devel pcre-devel gcc openssl openssl-devel per perl wget

安装OpenResty

  1. #下载OpenResty
  2. wget https://openresty.org/download/openresty-1.11.2.5.tar.gz
  3. #解压OpenResty
  4. tar -xf openresty-1.11.2.5.tar.gz
  5. #配置 OpenResty
  6. ./configure --prefix=/usr/local/openresty --with-luajit --without-http_redis2_module --with-http_stub_status_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module
  7. #编译安装
  8. make && make install
  9. #在profile中添加环境配置
  10. vi /etc/profile

Nginx服务自启

创建/etc/systemd/system/nginx.service,添加如下配置:

  1. [Unit]
  2. Description=nginx service
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/openresty/nginx/sbin/nginx
  7. ExecReload=/usr/local/openresty/nginx/sbin/nginx -s reload
  8. ExecStop=/usr/local/openresty/nginx/sbin/nginx -s quit
  9. PrivateTmp=true
  10. [Install]
  11. WantedBy=multi-user.target

保存退出后,然后执行服务配置加载,并设置开机启动,同时可以验证一下命令是否生效,操作如下:

  1. #重新加载服务配置
  2. systemctl daemon-reload
  3. #Nginx开机启动
  4. systemctl enable nginx
  5. #nginx启动:
  6. systemctl start nginx
  7. #nginx停止:
  8. systemctl stop nginx
  9. #重启 验证是否开机自启
  10. reboot

Redis安装

安装Redis,这里固定版本为6.2.4,操作如下:

  1. docker run -itd --name redis -p 6379:6379 \
  2. --privileged=true \
  3. -v /usr/local/docker/redis/data:/data \
  4. -v /usr/local/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  5. --restart=always \
  6. redis:6.2.4 --requirepass 123456

Kafka集群安装

Kafka集群需要使用Zookeeper实现分布式管理,我们先拉去Zookeeper镜像,再实现安装:

docker pull zookeeper:3.7.0

创建脚本文件kafka.yml

  1. version: '3.8'
  2. services:
  3. zookeeper:
  4. image: zookeeper:3.7.0
  5. restart: always
  6. hostname: 192.168。211.130
  7. container_name: zookeeper
  8. privileged: true
  9. ports:
  10. - 2181:2181
  11. volumes:
  12. - /usr/local/server/zookeeper/data/:/data
  13. build:
  14. context: .
  15. network: host
  16. kafka1:
  17. container_name: kafka1
  18. restart: always
  19. image: wurstmeister/kafka:2.12-2.5.0
  20. privileged: true
  21. ports:
  22. - 9092:9092
  23. - 19092:19092
  24. environment:
  25. KAFKA_BROKER_ID: 1
  26. HOST_IP: 192.168.211.130
  27. KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
  28. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.211.130:9092 ## 宿主机IP
  29. KAFKA_ZOOKEEPER_CONNECT: 192.168.211.130:2181
  30. #docker部署必须设置外部可访问ip和端口,否则注册进zk的地址将不可达造成外部无法连接
  31. KAFKA_ADVERTISED_HOST_NAME: 192.168.211.130
  32. KAFKA_ADVERTISED_PORT: 9092
  33. KAFKA_PORT: 9092
  34. KAFKA_delete_topic_enable: 'true'
  35. KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.211.130 -Dcom.sun.management.jmxremote.rmi.port=19092"
  36. JMX_PORT: 19092
  37. volumes:
  38. /etc/localtime:/etc/localtime
  39. depends_on:
  40. zookeeper
  41. kafka2:
  42. container_name: kafka2
  43. restart: always
  44. image: wurstmeister/kafka:2.12-2.5.0
  45. privileged: true
  46. ports:
  47. - 9093:9093
  48. - 19093:19093
  49. environment:
  50. KAFKA_BROKER_ID: 2
  51. HOST_IP: 192.168.211.130
  52. KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
  53. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.211.130:9093 ## 宿主机IP
  54. KAFKA_ZOOKEEPER_CONNECT: 192.168.211.130:2181
  55. #docker部署必须设置外部可访问ip和端口,否则注册进zk的地址将不可达造成外部无法连接
  56. KAFKA_ADVERTISED_HOST_NAME: 192.168.211.130
  57. KAFKA_ADVERTISED_PORT: 9093
  58. KAFKA_PORT: 9093
  59. KAFKA_delete_topic_enable: 'true'
  60. KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.211.130 -Dcom.sun.management.jmxremote.rmi.port=19093"
  61. JMX_PORT: 19093
  62. volumes:
  63. /etc/localtime:/etc/localtime
  64. depends_on:
  65. zookeeper
  66. kafka3:
  67. container_name: kafka3
  68. restart: always
  69. image: wurstmeister/kafka:2.12-2.5.0
  70. privileged: true
  71. ports:
  72. - 9094:9094
  73. - 19094:19094
  74. environment:
  75. KAFKA_BROKER_ID: 3
  76. HOST_IP: 192.168.211.130
  77. KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094
  78. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.211.130:9094 ## 宿主机IP
  79. KAFKA_ZOOKEEPER_CONNECT: 192.168.211.130:2181
  80. #docker部署必须设置外部可访问ip和端口,否则注册进zk的地址将不可达造成外部无法连接
  81. KAFKA_ADVERTISED_HOST_NAME: 192.168.211.130
  82. KAFKA_ADVERTISED_PORT: 9094
  83. KAFKA_PORT: 9094
  84. KAFKA_delete_topic_enable: 'true'
  85. KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.211.130 -Dcom.sun.management.jmxremote.rmi.port=19094"
  86. JMX_PORT: 19094
  87. volumes:
  88. /etc/localtime:/etc/localtime
  89. depends_on:
  90. zookeeper
  91. eagle:
  92. image: gui66497/kafka_eagle
  93. container_name: eagle_monitor
  94. restart: always
  95. depends_on:
  96. - kafka1
  97. - kafka2
  98. - kafka3
  99. ports:
  100. - "8048:8048"
  101. environment:
  102. ZKSERVER: "192.168.211.130:2181"

执行安装;

  1. #执行命令
  2. docker-compose -f kafka.yml up -d
  3. #效果如下
  4. [root@localhost kafka]# docker-compose -f kafka.yml up -d
  5. [+] Running 5/5
  6. ⠿ Container kafka2 Started 1.1s
  7. ⠿ Container kafka3 Started 1.2s
  8. ⠿ Container zookeeper Started 1.0s
  9. ⠿ Container kafka1 Started 1.1s
  10. ⠿ Container eagle_monitor Started 3.0s
  11. [root@localhost kafka]#

访问控制台http://192.168.211.130:8048/ke/,输入账号密码admin / 123456登录,效果如下:

ElasticSearch安装

采用Docker方式安装ElasticSearch:

  1. docker run -i --name elasticsearch -d \
  2. --restart=always -p 9200:9200 -p 9300:9300 \
  3. --privileged=true \
  4. -v /usr/local/server/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
  5. -e "discovery.type=single-node" \
  6. elasticsearch:7.12.1

IK分词器安装,下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases?page=4 下载后,将压缩包拷贝到 /usr/local/server/elasticsearch/plugins目录下,操作如下:

#解压需要用到unzip,如果没有安装它,可以先安装yum install unzip​#解压文件unzip elasticsearch-analysis-ik-7.10.1.zip -d ./ik​#重新启动elasticsearch,IK分词器就生效docker restart elasticsearch

elasticsearch-hq是一个非常方便的Elasticsearch可视化管理工具,我们可以安装一个:

docker run -id -p 5000:5000 --restart=always elastichq/elasticsearch-hq

安装完成后,访问http://192.168.211.130:5000/即可。

Kibana也是一款非常不错的Elasticsearch管理工具,我们也可以安装它:

  1. #进入容器
  2. docker exec -it kibana /bin/bash
  3. #编辑config/kibana.yml,修改中文,添加下面配置即可
  4. i18n.locale: "zh-CN"
  5. #重启容器
  6. docker restart kibana

MinIO安装

MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。

关于MinIOn使用参考文档 MinIO Quickstart Guide| Minio中文文档

我们可以使用docker进行环境部署和启动

  1. docker run -i -d \
  2. -p 9000:9000 \
  3. -p 9001:9001 \
  4. --restart=always \
  5. --name minio1 \
  6. --privileged=true \
  7. -v /etc/localtime:/etc/localtime \
  8. -v ~/minio/data:/data \
  9. -e "MINIO_ROOT_USER=minio" \
  10. -e "MINIO_ROOT_PASSWORD=minio123" \
  11. minio server /data --console-address ":9001"

访问:http://192.168.211.130:9000/login 输入账号 minio / minio123即可登录。

创建Buckets:

 

Buckets权限管理

上传图片测试:

如果所有文件都存储到shop下,不容易区分,我们可以根据不同文件,创建不同目录,例如shop/items/存储所有商品静态页,多级路径创建:

 

选择Upload上传文件:

文件访问:http://192.168.211.130:9000/shop/items/002.jpg

效果如下:

 如果是java程序抛出异常,主要是时间不同步问题:

The difference between the request time and the server's time is too large.

解决方案如下:

  1. #安装ntp ntpdate
  2. yum -y install ntp ntpdate
  3. #与时间服务器同步时间
  4. ntpdate cn.pool.ntp.org
  5. #将系统时间写入硬件时间
  6. hwclock --systohc

FastDFS安装

安装FastDFS需要安装Tracker和Storage:

  1. #Tracker安装
  2. docker run -d --name tracker --restart=always \
  3. --net=host morunchang/fastdfs \
  4. sh tracker.sh
  5. #Storage安装
  6. docker run -d --name storage \
  7. --restart=always --net=host -e \
  8. TRACKER_IP=192.168.211.130:22122 \
  9. -e GROUP_NAME=group1 morunchang/fastdfs \
  10. sh storage.sh

Canal安装

canal 1.1.4版本,迎来最重要的WebUI能力,引入canal-admin工程,支持面向WebUIcanal动态管理能力,支持配置、任务、日志等在线白屏运维能力。

不过当前已经更新到了最新版本1.1.6,但1.1.6属于测试版,1.1.5属于稳定版,所以我们安装1.1.5。

  1. docker run -p 11111:11111 --name=canal \
  2. --restart=always -d \
  3. canal/canal-server:v1.1.5

Git安装

安装命令:

  1. # 1. 卸载旧版本
  2. yum remove git
  3. # 2. 安装 yum 源的 Git 版本
  4. yum install -y git
  5. # 3. 查看版本
  6. git version
  7. # 输出 git version 1.8.3.1

Seata1.4.2安装

1)单机

  1. docker run --name seata1 -d \
  2. -p 8091:8091 -e SEATA_PORT=8091 \
  3. --privileged=true -e SEATA_IP=192.168.211.131 \
  4. -v /usr/local/server/seata1/conf:/root/seata-config \
  5. -v /usr/local/server/seata1/logs:/root/logs/seata \
  6. seataio/seata-server:1.4.2

修改注册中心

  1. #1)进入容器
  2. docker exec -it seata1 sh
  3. #2)进入resources
  4. cd resources/
  5. #3)修改配置中心和注册中心
  6. registry {
  7. # file ...nacos ...eureka...redis...zk...consul...etcd3...sofa
  8. type = "nacos"
  9. nacos {
  10. application = "seata-tc-server"
  11. serverAddr = "192.168.211.131:8848"
  12. group = "SEATA_GROUP"
  13. namespace = ""
  14. cluster = "default"
  15. username = "nacos"
  16. password = "nacos"
  17. }
  18. }
  19. config {
  20. # file...nacos ...apollo...zk...consul...etcd3
  21. type = "nacos"
  22. nacos {
  23. serverAddr = "192.168.211.131:8848"
  24. namespace = ""
  25. group = "SEATA_GROUP"
  26. username = "nacos"
  27. password = "nacos"
  28. dataId = "seataServer.properties"
  29. }
  30. }
  31. #4)退出,修改
  32. exit
  33. #5)修改Nacos,添加seataServer.properties,内容如下:
  34. # 数据存储方式,db代表数据库
  35. store.mode=db
  36. store.db.datasource=druid
  37. store.db.dbType=mysql
  38. store.db.driverClassName=com.mysql.jdbc.Driver
  39. store.db.url=jdbc:mysql://192.168.211.131:3306/seata?useUnicode=true&rewriteBatchedStatements=true
  40. store.db.user=root
  41. store.db.password=123456
  42. store.db.minConn=5
  43. store.db.maxConn=30
  44. store.db.globalTable=global_table
  45. store.db.branchTable=branch_table
  46. store.db.queryLimit=100
  47. store.db.lockTable=lock_table
  48. store.db.maxWait=5000
  49. # 事务、日志等配置
  50. server.recovery.committingRetryPeriod=1000
  51. server.recovery.asynCommittingRetryPeriod=1000
  52. server.recovery.rollbackingRetryPeriod=1000
  53. server.recovery.timeoutRetryPeriod=1000
  54. server.maxCommitRetryTimeout=-1
  55. server.maxRollbackRetryTimeout=-1
  56. server.rollbackRetryTimeoutUnlockEnable=false
  57. server.undo.logSaveDays=7
  58. server.undo.logDeletePeriod=86400000
  59. # 客户端与服务端传输方式
  60. transport.serialization=seata
  61. transport.compressor=none
  62. # 关闭metrics功能,提高性能
  63. metrics.enabled=false
  64. metrics.registryType=compact
  65. metrics.exporterList=prometheus
  66. metrics.exporterPrometheusPort=9898
  67. #6)创建seata数据库,并将如下脚本导入到数据库中
  68. SET NAMES utf8mb4;
  69. SET FOREIGN_KEY_CHECKS = 0;
  70. -- ----------------------------
  71. -- 分支事务表
  72. -- ----------------------------
  73. DROP TABLE IF EXISTS `branch_table`;
  74. CREATE TABLE `branch_table` (
  75. `branch_id` bigint(20) NOT NULL,
  76. `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  77. `transaction_id` bigint(20) NULL DEFAULT NULL,
  78. `resource_group_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  79. `resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  80. `branch_type` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  81. `status` tinyint(4) NULL DEFAULT NULL,
  82. `client_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  83. `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  84. `gmt_create` datetime(6) NULL DEFAULT NULL,
  85. `gmt_modified` datetime(6) NULL DEFAULT NULL,
  86. PRIMARY KEY (`branch_id`) USING BTREE,
  87. INDEX `idx_xid`(`xid`) USING BTREE
  88. ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
  89. -- ----------------------------
  90. -- 全局事务表
  91. -- ----------------------------
  92. DROP TABLE IF EXISTS `global_table`;
  93. CREATE TABLE `global_table` (
  94. `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  95. `transaction_id` bigint(20) NULL DEFAULT NULL,
  96. `status` tinyint(4) NOT NULL,
  97. `application_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  98. `transaction_service_group` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  99. `transaction_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  100. `timeout` int(11) NULL DEFAULT NULL,
  101. `begin_time` bigint(20) NULL DEFAULT NULL,
  102. `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  103. `gmt_create` datetime NULL DEFAULT NULL,
  104. `gmt_modified` datetime NULL DEFAULT NULL,
  105. PRIMARY KEY (`xid`) USING BTREE,
  106. INDEX `idx_gmt_modified_status`(`gmt_modified`, `status`) USING BTREE,
  107. INDEX `idx_transaction_id`(`transaction_id`) USING BTREE
  108. ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
  109. SET FOREIGN_KEY_CHECKS = 1;
  110. #7)重启容器
  111. docker restart seata1

此时查看Nacos中的服务注册数据,能看到seata服务注册数据:

RabbitMQ安装

安装命令如下:  

  1. docker run -d --hostname host130 \
  2. --name rabbitMq \
  3. -e RABBITMQ_DEFAULT_USER=admin \
  4. -e RABBITMQ_DEFAULT_PASS=123456 \
  5. -p 15672:15672 \
  6. -p 5672:5672 \
  7. --restart=always \
  8. rabbitmq:3.8.2-management

参数说明:

  1. -d 以守护进程方式在后台运行
  2. -p 15672:15672 management 界面管理访问端口
  3. -p 5672:5672 amqp 访问端口
  4. --name:指定容器名
  5. --hostname:设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts,作为容器主机IP的别名,并且将显示在容器的bash中,所以记得将host130添加到/etc/hosts下面,如下:
  6. #127.0.0.1 host130
  7. -e 参数
  8. RABBITMQ_DEFAULT_USER 用户名
  9. RABBITMQ_DEFAULT_PASS 密码

输入http://192.168.211.130:15672/ 访问,账号admin,密码123456,或者guest/guest

RocketMQ安装

安装RocketMQ需要安装mqnamesrv和broker,安装流程如下:

  1. #创建存储日志目录
  2. mkdir -p /usr/local/server/rocketmq/data/namesrv/logs /usr/local/server/rocketmq/data/namesrv/store
  3. #安装mqnamesrv
  4. docker run -d \
  5. --restart=always \
  6. --name rmqnamesrv \
  7. -p 9876:9876 \
  8. -v /usr/local/server/rocketmq/data/namesrv/logs:/root/logs \
  9. -v /usr/local/server/rocketmq/data/namesrv/store:/root/store \
  10. -e "MAX_POSSIBLE_HEAP=100000000" \
  11. rocketmqinc/rocketmq \
  12. sh mqnamesrv
  13. #创建目录存储broker日志信息和配置文件
  14. mkdir -p /usr/local/server/rocketmq/data/broker/logs /usr/local/server/rocketmq/data/broker/store /usr/local/server/rocketmq/conf
  15. #创建配置文件
  16. vi /usr/local/server/rocketmq/conf/broker.conf
  17. #配置文件完整内容如下
  18. # 所属集群名称,如果节点较多可以配置多个
  19. brokerClusterName = DefaultCluster
  20. #broker名称,master和slave使用相同的名称,表明他们的主从关系
  21. brokerName = broker-a
  22. #0表示Master,大于0表示不同的slave
  23. brokerId = 0
  24. #表示几点做消息删除动作,默认是凌晨4点
  25. deleteWhen = 04
  26. #在磁盘上保留消息的时长,单位是小时
  27. fileReservedTime = 48
  28. #有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
  29. brokerRole = ASYNC_MASTER
  30. #刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
  31. flushDiskType = ASYNC_FLUSH
  32. # 设置broker节点所在服务器的ip地址
  33. brokerIP1 = 192.168.211.130
  34. # 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
  35. diskMaxUsedSpaceRatio=95
  36. #创建broker
  37. docker run -d \
  38. --restart=always \
  39. --name rmqbroker \
  40. --link rmqnamesrv:namesrv \
  41. -p 10911:10911 \
  42. -p 10909:10909 \
  43. -v /usr/local/server/rocketmq/data/broker/logs:/root/logs \
  44. -v /usr/local/server/rocketmq/data/broker/store:/root/store \
  45. -v /usr/local/server/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
  46. -e "NAMESRV_ADDR=namesrv:9876" \
  47. -e "MAX_POSSIBLE_HEAP=200000000" \
  48. rocketmqinc/rocketmq \
  49. sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
  50. #创建控制台console
  51. docker run -d \
  52. --restart=always \
  53. --name rmqadmin \
  54. -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.211.130:9876 \
  55. -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
  56. -p 9999:8080 \
  57. pangliang/rocketmq-console-ng

Dockerfile-SpringBoot

以IgeMonitor为例,使用Dockerfile构建,Dockerfile文件如下:

  1. FROM openjdk:11-jre
  2. LABEL maintainer="研究院研发组 shenkunlin@itcast.cn"
  3. RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
  4. ADD ./ige-monitor-igem-1.0.jar /app.jar
  5. ENV dbuname="root"
  6. ENV dbpwd="root"
  7. ENV dbname="ige_config"
  8. ENV dburl="localhost:3306"
  9. ENV iport="8085"
  10. WORKDIR /
  11. ENTRYPOINT ["sh","-c","java -jar -Ddbuname=$dbuname -Ddbpwd=$dbpwd -Ddbname=$dbname -Ddburl=$dburl -Diport=$iport -Xms512m -Xmx512m -XX:PermSize=512M -XX:MaxPermSize=512m /app.jar"]

构建镜像:

docker build -t igemonitor:2.0 .

安装容器:

  1. docker run -it -d --name=igemonitor \
  2. -p 8085:8085 -p 28888:28888 \
  3. --restart=always \
  4. -e dbuname=root \
  5. -e dbpwd=123456 \
  6. -e dburl=192.168.211.131:3306 \
  7. igemonitor:2.0

镜像上传Dockerhub

Dockerhub地址:Docker Hub,如果想将自己制作的镜像发布上去,首先可以注册一个DockerHub账号:dockershenkunlin,密码:***********

1)创建仓库

 2)镜像推送

  1. #查看本地容器
  2. [root@localhost igemonitor]# docker ps
  3. CONTAINER ID IMAGE NAMES
  4. 4eecde9ee7f6 igemonitor:1.0 igemonitor
  5. #并提交容器制作成本地镜像
  6. docker commit igemonitor dockershenkunlin/igemonitor:v1.0
  7. #登录dockerhub
  8. [root@localhost igemonitor]# docker login
  9. Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
  10. Username: dockershenkunlin
  11. Password:
  12. Login Succeeded
  13. #将本地镜像推送至Dockerhub
  14. docker push dockershenkunlin/igemonitor:1.0

我们可以看到镜像已经推送至Dockerhub了,如下图:

3)镜像下载安装测试

记得先清除本地Docker镜像,再执行如下操作安装镜像:

  1. docker run -it -d --name=igemonitor \
  2. -p 8085:8085 -p 28888:28888 \
  3. --restart=always \
  4. -e dbuname=root \
  5. -e dbpwd=123456 \
  6. -e dburl=192.168.211.130:3306 \
  7. dockershenkunlin/igemonitor:v1.0

 效果如下:

安装完成后,访问http://192.168.211.130:8085/效果如下:

jar包安装到本地仓库

mvn install:install-file -Dfile=E:\ige-rpc-client-igem-1.0.jar -DgroupId=com.itheima -DartifactId=ige-rpc-client -Dversion=igem-1.0 -Dpackaging=jar

 效果如下:

开发常见问题

Idea运行程序无法启动

运行程序出现如下错误:

出现这个的原因一般是因为项目需要打印的环境变量太长,超过了限制,需要你缩短命令行来解决问题。解决这个问题,只需要修改工作空间中的配置即可。  

  1. #在项目的.idea/workspace.xml文件中,找到
  2. <component name="PropertiesComponent">
  3. #后面在添加下面一行配置即可,这种方式一次设置就行。
  4. <property name="dynamic.classpath" value="true" />

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/429849
推荐阅读
相关标签
  

闽ICP备14008679号