# 应用导出镜像并部署

本文档提供将提供以下说明:应用导出镜像后,如何部署到服务器中。其中实际部署将以阿里云服务器为例。

注: 下述文档中{xxxxx}花括号包起来的部分均指代变量,需要在执行时自行替换。

# 镜像导出

  1. 以应用开发者帐号登录低代码平台。

  2. 创建、编辑应用并成功发布应用。

    建议导出源码前先验证发布成功,否则将实时生成代码导出可能会比较慢。

  3. 进入应用可视化开发页面 选择 导出应用,接着选择导出选择方式为镜像,并选择需要导出的环境。

    导出方式默认包含前后端,建议选择成功发布过应用的环境。

  4. 上述步骤做完之后浏览器会下载一个压缩包到本地,解压压缩包即可得到相关镜像、配置文件、全量sql文件。

  5. 对下载文件进行解压,并进入到imge_export目录,可以看到有三个子目录:

    • image: docker镜像压缩包

    • db: sql文件

    • config:配置文件,包括定时器配置

通过unzip命令可以看到压缩包中的目录结构。

# 部署步骤

# 上传压缩包文件到指定服务器

# ssh连接服务器

  1. 这里我们推荐使用SSH登陆Linux实例,在登陆前您需要知晓服务器的管理员账号和密码。
  2. 在终端中输入并执行以下命令链接Linux服务器。
    • username 即为前提条件中获得的默认帐号。
    • hostname or IP address 为您的 Linux 实例公网 IP 或自定义域名。
ssh <username>@<hostname or IP address>
1

如果您的本地电脑为 Mac OS 系统,需先打开系统自带的终端(Terminal),再执行命令。 如果您的本地电脑为 Linux 系统,可直接执行命令。 如果您的本地电脑为 Windows 10 或 Windows Server 2019 系统,需先打开命令提示符(CMD),再执行命令。

  1. 输入已获取的密码,按 Enter,即可完成登录。

  1. 登陆成功后我们可以发现终端的前缀路径由桌面改成了云服务器的名称,我们可以输入以下指令来查看当前路径下的文件。
ls
1

由于演示的是一个全新的服务器,故在该路径下目前没有任何文件。

# 新建一个文件夹

为了方便管理,我们在当前服务器路径下新建一个目录deploy,在终端输入以下指令即可。

mkdir deploy
1

# 使用scp将解压目录上传至服务器

上传文件目录到服务器需要我们另开一个终端,在新开的终端下输入以下指令以上传目录到服务器中。

scp -r <filepath> <username>@<IP address>:<path/>
1
  • filepath 为待上传的文件目录地址,需要确保该路径下没有中文。

  • <username>@<IP address>:<path/>’为您的 Linux 实例公网 IP以及对应上传的目录。

以下是在示例中输入的内容,点击Enter后,文件即上传到了指定目录下。

# 服务器窗口,进入新建的文件夹

切换至之前的终端,输入以下命令切换至上一步骤示例中上传的指定目录下。

cd deploy/
cd image_export/
1
2

再输入ls,查看该路径下的文件,可以发现应用部署包都已经成功上传了。

# 初始化数据库

需进入到db目录。

应用的数据库初始化脚本为db/{数据库类型}.sql,比如db/mysql.sql、db/oracle.sql。

下面以mysql为例:

-- 先建库,这里根据实际情况执行
create database lcap_test;

-- 执行初始化脚本
-- 利用source命令,或者直接粘贴sql执行

source mysql.sql
1
2
3
4
5
6
7

# 修改配置文件

需进入到config目录。

下载的源码配置默认和所选环境(开发或生产)一致,独立部署时一般需要修改部分配置项,其中开发环境对应的配置文件为config/application-dev.yml,生产环境对应的配置文件为config/application-online。下面列出几个常见的需要修改的配置项:

  • spring.datasource.url:数据库地址。

  • spring.datasource.username:数据库账号。

  • spring.datasource.password:数据库密码。

  • lcp.upload.sinkType:文件上传保存的文件系统类型(目前支持local/s3)。

  • lcp.upload.sinkPath:文件上传本地文件系统保存的主目录。

  • lcp.upload.s3Address:文件上传s3对象存储服务地址。

  • lcp.upload.s3AccessKey:文件上传s3对象存储访问秘钥对。

  • lcp.upload.s3SecretKey:文件上传s3对象存储访问秘钥对。

  • lcp.upload.s3Bucket:文件上传s3对象存储bucket名称。

  • lcp.authCenter.enable:是否开发用户中心认证功能,默认true。

  • lcp.nuims:nuims用户中心服务地址。

  • logging.file.path:应用日志输出路径。

当应用中使用了有数报表时还需要修改下述配置项,配置文件位置开发环境对应为config/application-dev.yml,而生产环境对应为config/application-online.yml:

  • lcp.report.host: 有数报表服务地址。

  • lcp.report.tokenKey: 有数报表服务token。

  • lcp.report.domainId: 有数报表所在域ID。

  • lcp.report.projectId: 有数报表所在项目ID。

  • lcp.report.reportIdMap: 有数报表ID在开发环境和目标环境的映射关系。

  • lcp.report.componentIdMap: 有数报表使用的组件ID在开发环境和目标环境的映射关系。

当应用中使用了定时任务时还需要修改下述配置项,配置文件位置为config/function/quartz_config.yml:

  • spring.quartz.properties.org.quartz.dataSource.myDS.driver: 数据库驱动类型。

  • spring.quartz.properties.org.quartz.dataSource.myDS.URL: 数据库地址。

  • spring.quartz.properties.org.quartz.dataSource.myDS.user: 数据库账号。

  • spring.quartz.properties.org.quartz.dataSource.myDS.password: 数据库密码。

# 加载镜像

进入image 使用docker load命令加载docker镜像压缩包。

docker load -i {docker镜像文件名}

如:docker load -i hello.tar.gz
1
2
3

之后即可看到加载后的docker镜像,也可以通过docker images查看。

# 启动服务

启动服务的前提条件:

  1. sql已执行。
  2. 配置文件以修改。
  3. 镜像已加载。

启动服务的命令如下:

docker run --name {容器名} -i -p 8080:8080 --mount type=bind,source={config目录地址},target=/config -d {docker加载后的镜像名}

示例:docker run --name exportdemo -i -p 8080:8080 --mount type=bind,source=/root/deploy/image_export/config,target=/config  -d exportdemo:1675996801568
1
2
3
  • 日志挂载 若要对日志进行输出,则需要在服务器创建日志目录,如/root/deploy/image_export/logs,并挂载到/root/logs。

--mount type=bind,source=/root/deploy/image_export/logs,target=/root/logs
1
  • 定时器配置挂载

如果应用支持定时器功能,则新增参数。

--mount type=bind,source={config目录地址}/function/quartz_config.yml,target=/function/quartz_config.yml
如:--mount type=bind,source=/root/deploy/image_export/config/function/quartz_config.yml,target=/function/quartz_config.yml
1
2
  • 端口暴露

默认情况下,端口暴露为8080。

如果需要修改端口,需要修改配置文件里的配置。

server: port: 8080

另外启动时,需要修改端口映射。

如将 server.port 改为 9001 那启动命令为:

docker run -p 9001:9001
1
  • 启动服务

接着可以通过docker ps -a 命令查看容器情况。

一般来说,超过30s,容器仍处于UP状态情况,则表示服务启动。

# 访问服务

另外需要在阿里云服务器上开放8080端口或者自定义端口,参考https://developer.aliyun.com/article/701181。

一般访问部署节点的8080端口(默认端口,可修改配置文件)即可,比如浏览器访问http://{ip}:8080。

image-20230214145057648

# 导入数据库数据

您可以按需选择是否需要将低代码平台应用中的数据库数据导入到独立部署环境。若应用是用户私有用户认证,至少需要导入用户和权限相关的数据。

# 操作步骤

本节将以导出低代码应用中用户和权限相关的数据为例,介绍如何导出应用数据。

  1. 进入应用详情页基本信息选项卡,点击登录访问对应环境的数据库WebSQL。

    image-20230608144549914

  2. 点击导出按钮,然后点击添加任务按钮。

    image-20230504102458641

  3. 在弹窗中搜索"LCAP"并全选搜索结果,点击确定。

    image-20230504104258442

  4. 将导出的数据使用SQL等方式导入到目标数据库中。

上次更新: 2023年06月26日