tmerclub-doc/生产环境搭建/mall4cloud生产环境搭建.md
2025-03-19 15:04:57 +08:00

4.4 KiB
Raw Blame History

后台集成了nacos的配置中心生产环境和测试环境的配置中心地址不同实现生产环境和开发环境的配置相互隔离

中间件需要的数据库

在开发环境一般使用docker-compose就可以一件启动所有中间件了具体可以查看开发环境的配置。生产环境往往比较复杂所以要了解每个配置从哪来

/开发环境搭建/中间件docker-compose一键安装/mysql/initdb

这里会有很多个中间件需要操作的数据库初始化脚本。这些脚本都是需要先导入数据库的

使用环境变量设置配置

除了开发环境全局替换ip的方式我们可以为每个服务通过环境变量的形式更换ip和端口

bootstrap.yml中,有两个环境变量可以配置:NACOS_HOSTNACOS_PORT

bootstrap

我们进入生产环境的nacos再进入到每个服务的ymlmall4cloud-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_USERNAMEMYSQL_PASSWORDMYSQL_HOSTMYSQL_PORTMYSQL_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有那样一段配置用于解决这个问题。

# 数据源
spring:
  #避免nacos取网卡出错
  cloud:
    inetutils:
      preferred-networks: 192.168.1

redis的配置也在application.yml这个配置当中:

  redis:
    host: 192.168.193.128

xxl-job(定时任务服务)的配置也在application.yml这个配置当中:

mall4cloud:
  job:
    accessToken: default_token
    admin:
      addresses: http://192.168.193.128:8080/xxl-job-admin

rocketmq的配置也在application.yml这个配置当中:

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

# 要监听数据库的地址
canal.instance.master.address=192.168.193.128:3306

/开发环境搭建/中间件docker-compose一键安装/canal/canal.properties

# 要监听rocketmq的地址
rocketmq.namesrv.addr=192.168.193.128:9876

/开发环境搭建/中间件docker-compose一键安装/rocketmq/broker/conf/broker.conf

# 改成namesrv的地址
namesrvAddr=mall4cloud-rocketmq-namesrv:9876

/开发环境搭建/中间件docker-compose一键安装/seata/registry.conf

# 两个serverAddr改为nacos的地址
serverAddr = "192.168.193.128:8848

打包传统方式打包

mall4cloud的根目录下可以直接在idea右侧 单击maven点击clean再点击build

idea-maven

也使用mvn clean package -DskipTests 命令进行打包

最终会生成很多的jar如下图所示除了mall4cloud-apimall4cloud-common以外所有服务有关的jar都要用到。

打包之后的目录

打包完成的jar包直接在服务器用java -jar xxx.jar启动即可

docker构建

我们也有Dockerfile 对项目进行构建部署。不过首先还是需要maven进行打包成jar再通过jar转换成镜像。这里我们用spring boot 2.3之后支持的镜像分层技术进行打包构建,这里的Dockerfile文件参考的是spring boot提供的官方镜像分层例子具体可以看下我们的Dockerfile