知识库

Loading

0 评论 / 0 点赞 / 73 阅读  最佳实践 最后更新: 2022-12-01 作者: 飞致云 总字数: 2586

需求:
我们想要隐藏系统右上角的用户信息按钮,并将修改后的代码打包成镜像更新到DataEase服务器上,效果如下图所示
image-1668234350703

实现:

  1. 本地下载DataEase项目源码到本地
git clone https://github.com/dataease/dataease.git
# 切换到最新分支(当前最新分支为v1.16)
git fetch
git checkout v1.16
  1. 修改代码,修改/frontend/src/layout/components 目录下的 Topbar.vue 文件的代码,将下图中红框标记出的代码注释掉即可
    image-1669112258883

  2. 下载依赖项目 dataease-plugins 工程源码,在本地编译一下

git clone git@github.com:dataease/dataease-extension-sdk.git
cd dataease-extension-sdk/dataease-plugin-interface
mvn clean install

image-1668234422581

  1. 构建DataEase项目的前端依赖项目
# 切换到frontend目录下,下载前端依赖
cd frontend
npm install
# 构建前端依赖(构建过程中有异常提示不影响构建)
npm run build
 
# 切换到mobile目录下,下载前端依赖
cd ../mobile
npm install
# 构建前端依赖
npm run build

image-1668234455335

  1. 前端的frontend和mobile构建成功后,打包后端

# 切换到项目目录下,打包构建项目
mvn clean package
 
# 构建成功后backend目录下生成了 jar包

image-1668234476814

  1. 构建镜像

构建镜像有两种方案,第一种是利用本地docker构建镜像,然后save成tar包上传至服务器,第二种是利用外部服务器的docker进行构建

方案一(本地安装了docker才能使用此方案):

(1)启动本地的docker

(2)前端构建:frontend 和 mobile

# frontend 目录下执行
npm i
npm run build
# 看到dist文件生成出来即可
 
# mobile 目录下执行
npm i
npm run build
# 看到dist文件生成出来即可

(3)backend目录下执行

mvn clean package
# 完成后backend目录下会生成target文件夹,里面有backend-1.16.0.jar
# 使用命令启动测试
java -jar backend-1.16.0.jar
 
# 启动后浏览器访问 localhost:8081 测试

(4)修改 Dockerfile 文件,修改为当前版本(见截图)
image-1668234518678
(5)新建脚本文件 build.sh,脚本内容如下,将build.sh文件放置在项目下的 Dockerfile 文件所在的同目录下

#!/bin/bash
 
image="dataease:v1.16.0"
 
function build_image() {
  docker build -t $image .
  docker save -o dataease.tar $image
}
 
build_image

(6)执行脚本,执行完成后会在项目目录下生成一个tar包
image-1668234530579
(7)将tar包上传至部署dataease的服务器,执行命令加载镜像

docker load -i dataease.tar
 
# 查看镜像
docker images

image-1668234543709

(8)修改docker-compose.yml中的配置,将image属性修改为 dataease:v1.16.0

# 编辑文件,见下图
vim /opt/dataease/docker-compose.yml

image-1669886553305
image-1669886559832

方案二(可以使用已经部署了dataease的服务器上的docker,此处我的服务器地址为10.1.13.71):

(1)修改 Dockerfile 文件
image-1668234564726

(2)查看 10.1.13.71 的 docker.service 的地址

# 在服务器10.1.13.71上执行命令
service docker status
(可以看到我的服务器的docker配置文件地址是/etc/systemd/system/docker.service)

image-1668234575070

(3)修改docker.service的配置,开启Docker远程访问

#编辑 docker 文件
vim /etc/systemd/system/docker.service
 
# 开启Docker远程访问,修改 ExecStart 行为下面内容
ExecStart=/usr/bin/dockerd \
          -H unix:///var/run/docker.sock -H 0.0.0.0:2375
 
# 编辑完成后保存并退出

image-1668234586057

(4)重新加载 docker ,使配置生效

# 重新加载 docker 配置
// 1,加载docker守护线程
systemctl daemon-reload
// 2,重启docker
systemctl restart docker
 
# 用netstat -lntp | grep 2375 查看配置是否生效
netstat -lntp | grep 2375
 
# 使用curl进行测试
curl 127.0.0.1:2375/info

image-1668234594043

(5)防火墙开放2375端口,使外部可以访问此端口

# 防火墙开放2375端口
firewall-cmd --permanent --add-port=2375/tcp --zone=public
systemctl restart firewalld.service
 
#外部访问测试
curl http://10.1.13.71:2375/info

image-1668234603326

(6)本地配置Docker,并构建镜像

image-1668234607059
image-1668234610971
image-1668234620996

image-1668234628220

等待执行完成即可
image-1668234632142

(7)打包成功后,可以从服务器看到新建的镜像

docker images

(8)修改docker-compose.yml中的配置,将image属性修改为 dataease:v1.16.0

与方案一的第(8)步相同,不再赘述

  1. 插件库准备并重启 dataease
执行以下命令从原先的 dataease 容器里拷贝插件 jar 包,将拷贝的文件放置到 /opt/dataease/plugins/default 下

docker cp dataease:/opt/dataease/plugins/default /opt/dataease/plugins/
在docker-compose.yml中添加配置(见下图)

- ${DE_BASE}/dataease/plugins/default:/opt/dataease/plugins/default

image-1669886284022

执行命令重新构建dataease容器

dectl reload
文章目录
其他资源