构建前提
在 Nacos 2.2.0支持postgresql数据库基础上进行构建
github地址:个人仓库
编译打包源码
mvn -Prelease-nacos clean package install -Dmaven.test.skip=true
若想跳过pmd和checkstyle检查请使用
mvn -Prelease-nacos clean package install -Dmaven.test.skip=true -Dpmd.skip=true -Dcheckstyle.skip=true
编译后压缩包目录 nacos-postgresql/distribution/target
下载Nacos-Docker
官方Nacos Docker 快速开始:https://nacos.io/zh-cn/docs/quick-start-docker.html
Nacos Docker Github官方说明:https://github.com/nacos-group/nacos-docker/blob/master/README_ZH.md
下载对应自己的nacos版本,博主为 nacos version 2.2.0
下载链接 version 2.2.0:https://github.com/nacos-group/nacos-docker/archive/refs/tags/v2.2.0.tar.gz
nacos-docker 文件结构
|----build:nacos 镜像制作的源码
|----bin:shell脚本
|----conf:配置文件
|----env: docker compose 环境变量文件
|----example: docker-compose编排例子
博主未进行 postgresql -->docker-compose模式的env和example扩展
解压tar.gz
[root@VM-0-9-centos ~]# tar -zxvf v2.2.0.tar.gz
修改conf配置
路径 nacos-docker-2.2.0/build/conf
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=postgresql
db.num=1
db.url.0=jdbc:postgresql://127.0.0.1:5432/nacos_config?reWriteBatchedInserts=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false
db.user.0=xxx
db.password.0=xxx
或者使用下面参数配置
注释原先的mysql,若是mysql数据库则不用修改conf文件
#db.num=${MYSQL_DATABASE_NUM:1}
#db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
#db.user.0=${MYSQL_SERVICE_USER}
#db.password.0=${MYSQL_SERVICE_PASSWORD}
db.num=${POSTGRESQL_DATABASE_NUM:1}
db.url.0=jdbc:postgresql://${POSTGRESQL_SERVICE_HOST}:${POSTGRESQL_SERVICE_PORT:5432}/${POSTGRESQL_SERVICE_DB_NAME}?${POSTGRESQL_SERVICE_DB_PARAM:reWriteBatchedInserts=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false}
db.user.0=${POSTGRESQL_SERVICE_USER}
db.password.0=${POSTGRESQL_SERVICE_PASSWORD}
请注意这里扩展了参数
POSTGRESQL_SERVICE_HOST 数据库 连接地址
POSTGRESQL_SERVICE_PORT 数据库端口 默认 : 3306
POSTGRESQL_SERVICE_DB_NAME 数据库库名
POSTGRESQL_SERVICE_USER 数据库用户名
POSTGRESQL_SERVICE_PASSWORD 数据库用户密码
POSTGRESQL_SERVICE_DB_PARAM 数据库连接参数 default : reWriteBatchedInserts=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false
POSTGRESQL_DATABASE_NUM 数据库编号 默认 :1
编辑Dockerfile文件
将压缩包放置nacos-docker-2.2.0/build目录下
cp /nacos-postgresql/distribution/target/nacos-server-2.2.0.tar.gz /nacos-docker-2.2.0/build/
因为是自己编译的源代码所以不需要去github上下载代码了
#RUN wget https://github.com/alibaba/nacos/releases/download/${NACOS_VERSION}${HOT_FIX_FLAG}/nacos-server-${NACOS_VERSION}.tar.gz -P /home
COPY nacos-server-${NACOS_VERSION}.tar.gz /home
构建镜像
切换到nacos-docker-2.2.0/build目录
docker build -t nacos:2.2.0 .
因为云服务器未安装postgresql数据库 就未启动nacos镜像
达梦数据库的集成请参考这篇文章:Nacos使用达梦数据库,并制作docker镜像