发布于 

docker安装spring cloud 以及 cloud alibaba 相关支持服务的配置

docker安装与命令

使用国内 daocloud 一键安装命令:

1
curl -sSL https://get.daocloud.io/docker | sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
启动docker
systemctl start docker

重启docker
systemctl restart docker

停止docker
systemctl stop docker

搜索镜像
docker search 镜像名称

下载镜像
docker pull 镜像

查看已安装镜像列表
docker images

删除镜像
docker rmi 镜像id

运行镜像生成新的容器
docker run -d -it 镜像名称:版本号
eg: docker run -d -it -p 8080:8080 tomcat:7
-p 端口映射,前者宿主机端口,后者容器端口,多个端口 -p 8080:8080 -p 9090:9090
-d 后台运行容器
-it 以交互模式运行容器
eg: docker run -d -it -p 8080:8080 --name test -v /opt:/opt tomcat:7
-v 数据挂载
-e 设置配置参数
-e TZ="Asia/Shanghai" 设置时区
--network=host 容器端口映射主机端口
--restart always docker重启时重启容器

查看运行容器
docker ps

查看所有容器
docker ps -a

进入容器
docker exec -it 容器id /bin/bash

退出容器不停止容器
Ctrl+P+Q

退出容器停止容器
exit
当容器启动时有添加 -d命令同时有进程在前台运行时exit退出时不会停止容器

容器的启动停止
docker start 容器id
docker stop 容器id

重启容器
docker restart 容器id

删除容器
docker rm 容器id

查看容器日志
docker logs 容器id -f

查看指定时间后的日志,只显示最后100行
docker logs -f -t --since="2020-06-17" --tail=100 CONTAINER_ID

查看某时间段日志
docker logs -t --since="2020-06-17T13:23:37" --until "2020-06-17T12:23:37" CONTAINER_ID

修改已启动的容器的时区
1.复制相应的时区文件,替换系统时区文件;
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
有的容器基础镜像是有这个文件的,直接拷贝就可以,如果不能拷贝,则是因为创建镜像时依赖的基础镜像 运行的容器没有这两个文件,使用下面的办法
2. 创建文件夹
mkdir -p /usr/share/zoneinfo/Asia
3.回到宿主机,复制宿主机里的文件到容器中
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID或容器名:/usr/share/zoneinfo/Asia
4. 进入容器
docker exec -it 容器Id或容器名 bash
执行命令 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5. 验证 输入 date

docker安装MySQL

docker search mysql 命令来查看可用版本

下载 Mysql 镜像

1
docker pull mysql:5.6

部署启动MySQL镜像

1
2
3
4
5
6
docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

  • -d:以后台的方式运行;
  • –name mysql:指定容器的名称为 mysql;
  • -p 3306:3306 将容器的 3306 端口挂载到宿主机的 3306 端口上;
  • -e MYSQL_ROOT_PASSWORD=123456:指定 root 的密码为 123456

将容器中的目录文件复制到宿主机中

1
2
3
4
# 将容器中的 mysql 配置文件复制到宿主机中指定路径下,路径可以根据需要进行修改
docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /usr/local/docker/mysql/config
# 将容器中的 mysql 存储目录复制到宿主机中
docker cp mysql:/var/lib/mysql/ /usr/local/docker/mysql/data

停止容器并删除

1
2
docker stop 容器id 
docker rm 容器id

正式运行 Mysql 容器并将刚刚复制到本地的配置和存储目录挂载到新的容器里面

1
2
3
4
5
6
7
8
docker run -d \
--name mysql \
-p 3306:3306 \
--restart always \
-v /usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /usr/local/docker/mysql/data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

完成后可以docker ps查看容器是否运行,确认运行远程连接

docker安装zookeeper

下载zookeeper镜像

1
docker pull zookeeper

启动容器并添加映射

1
docker run -d -p 2181:2181 --name zookeeper01 --restart always 镜像id

docker 安装redis

1
2
3
4
5
6
7
8
docker run -d \
-p 6379:6379 \
--name redis \
--restart always \
-v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis/data:/data \
redis:alpine \
redis-server --appendonly yes --requirepass "123456"
  • -p 6379:6379: 将容器的 6379 端口映射到宿主机的 6379 端口;
  • –restart always 设置docker重启时自动重启容器
  • -v /usr/local/docker/redis/data:/data : 将容器中的 /data 数据存储目录, 挂载到宿主机中 /usr/local/docker/redis/data 目录下;
  • -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf : 将容器中 /etc/redis/redis.conf 配置文件,挂载到宿主机的 /usr/local/docker/redis/redis.conf 文件上;
  • redis-server –appendonly yes: 在容器执行 redis-server 启动命令,并打开 redis 持久化配置;
  • –requirepass “123456” 设置redis密码

进入redis容器并且连接redis 确认正常运行

1
docker  exec -it redis redis-cli -h 127.0.0.1 -p 6379 -a password

docker 安装RabbitMQ

下载镜像

1
2
#指定版本,该版本包含了web控制页面
docker pull rabbitmq:management

运行镜像

1
2
3
4
5
6
7
docker run -d \
--hostname my-rabbit \
--name rabbit \
--restart always \
-e RABBITMQ_DEFAULT_USER=user \
-e RABBITMQ_DEFAULT_PASS=password \
-p 15672:15672 -p 5672:5672 rabbitmq:management

访问管理页面

1
http://localhost:15672/

docker安装nginx

拉取镜像

1
docker pull nginx:1.8

测试启动

1
docker run --name nginx-test -p 8081:80 -d nginx

将容器内nginx的配置文件拷贝到本地

1
docker cp a2bdd792b474:/etc/nginx/nginx.conf /usr/local/docker/nginx/conf

赋予本地存放nginx配置中的文件夹开放权限

1
chmod -R 777 nginx

创建容器启动镜像,将配置等需要修改的文件进行映射

1
2
3
4
5
6
7
8
docker run -d \
-p 80:80 \
--name nginx-test-web \
--restart always \
--network=host \
-v /usr/local/docker/nginx/www:/usr/share/nginx/html \
-v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker/nginx/logs:/var/log/nginx nginx

创建一个index.html放入www文件夹中,访问部署的地址

docker 安装 zipkin

1、拉镜像

1
docker pull openzipkin/zipkin

2、运行镜像

1
docker run -d --restart always -p 9411:9411 --name zipkin openzipkin/zipkin

3、访问可视化界面

1
浏览器访问:http://ip:9411/zipkin/

docker 安装 nacos

拉镜像,版本查看:https://github.com/nacos-group/nacos-docker

1
docker pull nacos/nacos-server:1.1.4

创建数据目录

1
mkdir -p  /usr/local/docker/nacos/logs

创建存储nacos配置的数据库

1
create database nacos_config

nacos初始化sql,需要先创建nacos数据库后,然后执行下面的sql

https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = 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(255) DEFAULT NULL,
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) DEFAULT NULL,
`c_use` varchar(64) DEFAULT NULL,
`effect` varchar(64) DEFAULT NULL,
`type` varchar(64) DEFAULT NULL,
`c_schema` text,
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';

/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_aggr */
/******************************************/
CREATE TABLE `config_info_aggr` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(255) NOT NULL COMMENT 'group_id',
`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
`content` longtext NOT NULL COMMENT '内容',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';


/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_beta */
/******************************************/
CREATE TABLE `config_info_beta` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`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',
`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_tag */
/******************************************/
CREATE TABLE `config_info_tag` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`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',
`tag_id` varchar(128) NOT NULL COMMENT 'tag_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 '2010-05-05 00:00:00' COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = 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,
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';

/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = 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 '2010-05-05 00:00:00' COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = his_config_info */
/******************************************/
CREATE TABLE `his_config_info` (
`id` bigint(64) unsigned NOT NULL,
`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`data_id` varchar(255) NOT NULL,
`group_id` varchar(128) NOT NULL,
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL,
`md5` varchar(32) DEFAULT NULL,
`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
`src_user` text,
`src_ip` varchar(20) DEFAULT NULL,
`op_type` char(10) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
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='多租户改造';


/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = 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 '2010-05-05 00:00:00' COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' 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,
password varchar(500) NOT NULL,
enabled boolean NOT NULL
);

CREATE TABLE roles (
username varchar(50) NOT NULL,
role varchar(50) NOT NULL,
constraint uk_username_role UNIQUE (username,role)
);

CREATE TABLE permissions (
role varchar(50) NOT NULL,
resource varchar(512) NOT NULL,
action varchar(8) NOT NULL,
constraint uk_role_permission UNIQUE (role,resource,action)
);

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

运行镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
docker run -d \

-e PREFER_HOST_MODE=ip \

-e MODE=standalone \

-e SPRING_DATASOURCE_PLATFORM={数据源平台 mysql} \

-e MYSQL_MASTER_SERVICE_HOST={MYSQL主服务主机ip} \

-e MYSQL_MASTER_SERVICE_PORT={MYSQL主服务端口} \

-e MYSQL_MASTER_SERVICE_USER={MYSQL主服务用户名} \

-e MYSQL_MASTER_SERVICE_PASSWORD={MYSQL主服务密码} \

-e MYSQL_MASTER_SERVICE_DB_NAME={MYSQL主服务数据库名 nacos_config } \

-e MYSQL_SLAVE_SERVICE_HOST={MYSQL从服务主机ip} \

-e MYSQL_SLAVE_SERVICE_PORT={MYSQL从服务端口} \

-v /usr/local/docker/nacos/logs:/home/nacos/logs \

-p 8848:8848 \

--name nacos \

--restart=always \

nacos/nacos-server:1.1.4

访问nacos

1
ip:8848/nacos

新增测试配置

查看数据库是否更新
数据库配置没有问题的话可以在表config_info中看到刚才新增的配置信息

获取配置
http://ip:8848/nacos/v1/cs/configs?dataId=test01.yml&group=DEFAULT_GROUP

docker 安装sentinel

拉取镜像

1
docker pull bladex/sentinel-dashboard

运行镜像

1
docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard

访问dashboard 地址

1
2
3
4
5
6
7
8
9
10
11
地址:http://localhost:8858
账号密码都为:sentinel

docker 直接拉取镜像无法运行时修改dashboard 的账号密码
如果想要修改需要拉取java环境镜像
用户可以通过如下参数进行配置:
-Dsentinel.dashboard.auth.username=sentinel 用于指定控制台的登录用户名为 sentinel;
-Dsentinel.dashboard.auth.password=123456 用于指定控制台的登录密码为 123456;

其他参数配置见官网文档
https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0#%E9%89%B4%E6%9D%83

docker安装 seata:1.0.0

拉取镜像

1
docker pull seataio/seata-server

测试启动镜像

1
docker run --name seata-server -p 8091:8091 -d  seataio/seata-server:1.0.0

将容器中的registry.conf复制到本地来

1
docker cp seata-server:/seata-server/resources/registry.conf /usr/local/docker/seata/conf

官网下载复制config.txt文件进行修改

1
2
3
4
5
6
7
8
9
10
官网地址
https://github.com/seata/seata/tree/1.0.0/script/config-center

将配置中的
store.db.db-type=mysql
store.db.driver-class-name=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
store.db.user=mysql
store.db.password=mysql
改为自己数据库的地址

从官网拉取shell脚本将config.txt推送到nacos配置中心

1
2
3
4
5
6
7
官网链接:https://github.com/seata/seata/blob/1.0.0/script/config-center/nacos/nacos-config.sh

官网shell中推送脚本中有个nacos-config.log这个文件没有导致一直推送报错
官网中也未找到nacos-config.log这个文件,自己新建空白nacos-config.log也无法正常运行nacos-config.sh

重新拉取#1842标签版本的nacos-config.sh成功执行
官网链接:https://github.com/seata/seata/commit/4695d450a07b0f6cdfe61b6dd2db22adbee18969#diff-19562cc9801112787601930e539d9560

这时进入nacos控制台中应该可以看见我们推送过去的配置,默认配置是在public中的,手动克隆到自己建的命名空间

更改复制出来的registry.conf配置文件使用nacos 做注册、配置中心,db存储日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"

nacos {
serverAddr = "localhost:8848"
namespace = "19de1733-6c9f-42b8-9b34-166a9182988f" #上面nacos中的命名空间
cluster = "default"
}
}

config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"

nacos {
serverAddr = "127.0.0.1:8848"
namespace = "19de1733-6c9f-42b8-9b34-166a9182988f" #上面nacos中的命名空间
group = "SEATA_GROUP" #分组id
}
}

创建存储seata配置的数据库

1
create database seata

初始化seata数据库

1
2
官网地址:https://github.com/seata/seata/blob/1.0.0/script/server/db/mysql.sql
复制出来执行就行

创建完成如图

停止并删除之前的容器

1
2
docker stop seata-server
docker rm seata-server

赋予本地存放seata配置中的文件夹开放权限

1
chmod -R 777 seata

重新创建启动容器,并将本地registry.conf挂载到容器中

1
2
3
4
5
6
docker run -d \
--name seata-server \
-e SEATA_IP=向注册中心注册时IP \
-p 8091:8091 \
-v /usr/local/docker/seata/conf/registry.conf:/seata-server/resources/registry.conf \
seataio/seata-server:1.0.0

其他环境变量

运行成功后进入nacos控制台查看服务列表,seata服务成功注册

docker运行自己的jar包

创建镜像启动容器运行

  1. 使用rz命令上传jar到服务器的指定目录(没有此命令的安装一下lrzsz)
  2. 使用vim命令创建Dockerfile 文件
  3. 然后将下面的内容复制到Dockerfile文件中
    1
    2
    3
    4
    5
    FROM java:8
    MAINTAINER bin
    ADD demo-1.0.0.jar demo.jar
    EXPOSE 8080
    ENTRYPOINT ["java","-jar","demo.jar"]
  • from java:8 拉取一个jdk为1.8的docker 镜像
  • maintainer 镜像作者名称
  • demo-1.0.0.jar 上传的jar包名称
  • demo.jar 将该jar包重新命名的名称,在容器中运行的名称
  • expose 该容器暴露的端口是多少,就是jar在容器中以多少端口运行
  • entrypoint 容器启动之后执行的命令,java -jar demo.jar 即启动jar
  1. 创建好Dockerfile文件之后,执行命令 构建镜像 最后的 “ . ” 表示 Dockerfile 文件在当前目录下
    1
    docker build -t demo .
  2. 镜像构建成功,运行容器
    1
    docker run -d --name demo -p 8080:8080 demo
  3. docker ps 查看容器是否成功启动

运行jdk镜像将存放jar的目录进行挂载

  1. 在服务器中拉取jdk8的镜像
  2. 构建容器启动
    1
    2
    3
    4
    5
    6
    7
    8
    docker run -d \
    --restart=always \
    -v /usr/local/docker/demo/jar:/jar -v /server/logs/demo:/mnt/logs/demo \
    -p 8080:8080 \
    --name demo \
    java:8 /usr/bin/java -jar \
    -Duser.timezone=GMT+08 \
    /jar/demo-1.0.0.jar
  • -Duser.timezone 设置时区
  • java:8 /usr/bin/java -jar 是执行 java jar的命令
  • /jar/demo-1.0.jar 是需要运行的jar包的位置在容器中的什么位置,/jar 下面

本站由 @binvv 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。