☰
Current Page
Main Menu
Home
Home
Editing
内置app调整
Edit
Preview
h1
h2
h3
default
Set your preferred keybinding
default
vim
emacs
markdown
Set this page's format to
AsciiDoc
Creole
Markdown
MediaWiki
Org-mode
Plain Text
RDoc
Textile
Rendering unavailable for
BibTeX
Pod
reStructuredText
Help 1
Help 1
Help 1
Help 2
Help 3
Help 4
Help 5
Help 6
Help 7
Help 8
Autosaved text is available. Click the button to restore it.
Restore Text
### 方案设计文档 #### 背景和目标 本方案旨在优化现有系统的内置应用管理方式,通过外置化内置应用、精简 Dockerfile 以及调整应用市场功能,来实现减小镜像大小、简化工程维护,并增强内置应用的灵活性和可维护性。 #### 主要调整内容 1. **内置应用外置化** 2. **精简 Dockerfile** 3. **应用市场调整** 4. **通过 MinIO 挂载方式加载应用** --- ### 详细方案 #### 1. 内置应用外置化 **目标:** - 将内置应用与普通应用一样,通过挂载的方式统一加载到 `apps` 目录下。 **好处:** - 减小镜像大小。 - 减少引擎代码工程中内置应用的 jar 包维护,使项目工程更简洁。 - 可直接沿用已有的apps目录作为挂载点。 #### 2. 精简 Dockerfile **目标:** - 去掉 Dockerfile 中的 `cp` 命令,不再需要拷贝源码中的内置应用到镜像中。 **实现步骤:** - 删除 Dockerfile 中与内置应用相关的 `COPY` 和 `CMD` 命令。 #### 3. 应用市场调整 **目标:** - 调整应用市场功能,允许安装内置应用,并通过种子数据的方式预安装所有的内置应用,同时支持内置应用的升级。 **实现步骤:** - 修改应用市场的配置和逻辑,允许内置应用的安装和升级。 - 通过种子数据的方式预先配置所有内置应用,并在系统初始化时自动安装这些应用。 #### 4. 通过 MinIO 挂载方式加载应用 **目标:** - 通过将存储应用市场 jar 的 MinIO 挂载到镜像中,直接加载内置应用和业务应用,而不需要下载 jar。 **实现步骤:** - 使用 Kubernetes 的 CSI(Container Storage Interface)驱动将 MinIO 存储挂载到容器中,更为具体方式参考业界方案。 - 修改应用的启动脚本或配置文件,使其能够从挂载的 MinIO 目录中加载应用。 **示例:** ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: minio-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteMany csi: driver: minio.csi.min.io volumeHandle: "minio-volume" volumeAttributes: bucket: "apps" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: minio-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi --- apiVersion: v1 kind: Pod metadata: name: app-pod spec: containers: - name: app-container image: my-app-image volumeMounts: - mountPath: "/apps" name: minio-apps volumes: - name: minio-apps persistentVolumeClaim: claimName: minio-pvc ``` ### 总结 通过上述方案,内置应用不再打包在镜像中,而是通过挂载的方式统一加载到 `apps` 目录下。此举不仅减小了镜像大小,还简化了工程维护。同时,应用市场也进行了相应调整,允许安装内置应用并支持其升级。最后,作为更简洁的方式,可考虑通过 MinIO 挂载的方式加载应用,进一步简化了应用的加载过程。 此外,可解决在多个容器同时启动时并发拷贝内置应用可能导致的 jar 包找不到的 bug,如下:  http://iidp.chinasie.com:9999/iidpminio/home/error.png
Uploading file...
Sidebar
[[_TOC_]]
Edit message:
Cancel