132 lines
4.4 KiB
Markdown
132 lines
4.4 KiB
Markdown
![]() |
> 后台集成了nacos的配置中心,生产环境和测试环境的配置中心地址不同,实现生产环境和开发环境的配置相互隔离
|
|||
|
|
|||
|
## 中间件需要的数据库
|
|||
|
|
|||
|
在开发环境一般使用docker-compose就可以一件启动所有中间件了,具体可以查看开发环境的配置。生产环境往往比较复杂,所以要了解每个配置从哪来
|
|||
|
|
|||
|
在`/开发环境搭建/中间件docker-compose一键安装/mysql/initdb`
|
|||
|
|
|||
|
这里会有很多个中间件需要操作的数据库初始化脚本。这些脚本都是需要先导入数据库的
|
|||
|
|
|||
|
|
|||
|
## 使用环境变量设置配置
|
|||
|
|
|||
|
除了开发环境全局替换ip的方式,我们可以为每个服务,通过环境变量的形式,更换ip和端口
|
|||
|
|
|||
|
在`bootstrap.yml`中,有两个环境变量可以配置:`NACOS_HOST` 和 `NACOS_PORT`
|
|||
|
|
|||
|

|
|||
|
|
|||
|
|
|||
|
我们进入生产环境的nacos,再进入到每个服务的yml,如`mall4cloud-auth.yml` 或者`mall4cloud-biz.yml`,可以看到这里有一段类似这样的配置:
|
|||
|
|
|||
|
```
|
|||
|
url: jdbc:mysql://${MYSQL_HOST:192.168.193.128}:${MYSQL_PORT:3306}/${MYSQL_DATABASE:mall4cloud_auth}
|
|||
|
username: ${MYSQL_USERNAME:root}
|
|||
|
password: ${MYSQL_PASSWORD:root}
|
|||
|
```
|
|||
|
|
|||
|
这里有五个环境变量可以配置:`MYSQL_USERNAME` 、`MYSQL_PASSWORD` 、`MYSQL_HOST` 、 `MYSQL_PORT` 和 `MYSQL_DATABASE`
|
|||
|
|
|||
|
注意:在k8s当中,通过环境变量的形式,有可能会遇到运行的java服务启动时报`Malformed database URL, failed to parse the main URL sections. ` 这样的错误,此时要将环境变量去除,改为直接读取的方式如:
|
|||
|
|
|||
|
```
|
|||
|
url: jdbc:mysql://mysql:3306/:mall4cloud_auth
|
|||
|
username: root
|
|||
|
password: root
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
## 非环境变量藏在nacos的配置
|
|||
|
|
|||
|
一台机器很可能有多个网卡,如果nacos无法识别出准确的网卡信息,需要指定nacos的网卡前缀,在nacos配置中心当中的`application.yml`有那样一段配置用于解决这个问题。
|
|||
|
|
|||
|
```yaml
|
|||
|
# 数据源
|
|||
|
spring:
|
|||
|
#避免nacos取网卡出错
|
|||
|
cloud:
|
|||
|
inetutils:
|
|||
|
preferred-networks: 192.168.1
|
|||
|
```
|
|||
|
|
|||
|
redis的配置也在`application.yml`这个配置当中:
|
|||
|
```yaml
|
|||
|
redis:
|
|||
|
host: 192.168.193.128
|
|||
|
```
|
|||
|
|
|||
|
`xxl-job`(定时任务服务)的配置也在`application.yml`这个配置当中:
|
|||
|
```yaml
|
|||
|
mall4cloud:
|
|||
|
job:
|
|||
|
accessToken: default_token
|
|||
|
admin:
|
|||
|
addresses: http://192.168.193.128:8080/xxl-job-admin
|
|||
|
```
|
|||
|
|
|||
|
rocketmq的配置也在`application.yml`这个配置当中:
|
|||
|
```yaml
|
|||
|
rocketmq:
|
|||
|
name-server: 192.168.193.128:9876
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
在nacos的配置列表当中,还有一个命名空间 `seata` 这里的配置都是`seata`的配置,这里有几个东西需要修改
|
|||
|
|
|||
|
- `service.default.grouplist`: 这个为seata所在的服务器的ip和`seata`启动的端口
|
|||
|
- `store.db.url`: 将这里的数据库连接到对应的seata的数据库
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## 非环境变量在docker-compose的配置
|
|||
|
|
|||
|
在`/开发环境搭建/中间件docker-compose一键安装/canal/example/instance.properties`
|
|||
|
|
|||
|
```properties
|
|||
|
# 要监听数据库的地址
|
|||
|
canal.instance.master.address=192.168.193.128:3306
|
|||
|
```
|
|||
|
|
|||
|
在`/开发环境搭建/中间件docker-compose一键安装/canal/canal.properties`
|
|||
|
|
|||
|
```properties
|
|||
|
# 要监听rocketmq的地址
|
|||
|
rocketmq.namesrv.addr=192.168.193.128:9876
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
在`/开发环境搭建/中间件docker-compose一键安装/rocketmq/broker/conf/broker.conf`
|
|||
|
|
|||
|
```properties
|
|||
|
# 改成namesrv的地址
|
|||
|
namesrvAddr=mall4cloud-rocketmq-namesrv:9876
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
在`/开发环境搭建/中间件docker-compose一键安装/seata/registry.conf`
|
|||
|
|
|||
|
```properties
|
|||
|
# 两个serverAddr改为nacos的地址
|
|||
|
serverAddr = "192.168.193.128:8848
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
## 打包传统方式打包
|
|||
|
|
|||
|
在`mall4cloud`的根目录下,可以直接在idea右侧 单击maven,点击clean,再点击build
|
|||
|
|
|||
|

|
|||
|
|
|||
|
也使用mvn clean package -DskipTests 命令进行打包
|
|||
|
|
|||
|
最终会生成很多的jar,如下图所示除了`mall4cloud-api` 和 `mall4cloud-common`以外所有服务有关的jar都要用到。
|
|||
|
|
|||
|

|
|||
|
|
|||
|
打包完成的jar包,直接在服务器用java -jar xxx.jar启动即可
|
|||
|
|
|||
|
## docker构建
|
|||
|
|
|||
|
我们也有`Dockerfile` 对项目进行构建部署。不过首先还是需要maven进行打包成jar,再通过jar转换成镜像。这里我们用`spring boot 2.3`之后支持的镜像分层技术进行打包构建,这里的`Dockerfile`文件参考的是spring boot提供的官方镜像分层例子,具体可以看下我们的`Dockerfile`
|