From f6d709c0e2acff0d9c3cd51ddeeb68bbf8bdb33a Mon Sep 17 00:00:00 2001
From: okxlin <61420215+okxlin@users.noreply.github.com>
Date: Wed, 29 Jul 2026 03:14:43 +0800
Subject: [PATCH] Add drawDB application
---
apps/drawdb/1.8.1/.env.sample | 2 ++
apps/drawdb/1.8.1/data.yml | 19 +++++++++++++
apps/drawdb/1.8.1/docker-compose.yml | 21 ++++++++++++++
apps/drawdb/1.8.1/scripts/init.sh | 3 ++
apps/drawdb/1.8.1/scripts/uninstall.sh | 2 ++
apps/drawdb/1.8.1/scripts/upgrade.sh | 3 ++
apps/drawdb/README.md | 35 ++++++++++++++++++++++++
apps/drawdb/data.yml | 32 ++++++++++++++++++++++
apps/drawdb/latest/.env.sample | 2 ++
apps/drawdb/latest/data.yml | 19 +++++++++++++
apps/drawdb/latest/docker-compose.yml | 21 ++++++++++++++
apps/drawdb/latest/scripts/init.sh | 3 ++
apps/drawdb/latest/scripts/uninstall.sh | 2 ++
apps/drawdb/latest/scripts/upgrade.sh | 3 ++
apps/drawdb/logo-LICENSE.txt | 4 +++
apps/drawdb/logo.png | Bin 0 -> 3665 bytes
16 files changed, 171 insertions(+)
create mode 100644 apps/drawdb/1.8.1/.env.sample
create mode 100644 apps/drawdb/1.8.1/data.yml
create mode 100644 apps/drawdb/1.8.1/docker-compose.yml
create mode 100755 apps/drawdb/1.8.1/scripts/init.sh
create mode 100755 apps/drawdb/1.8.1/scripts/uninstall.sh
create mode 100755 apps/drawdb/1.8.1/scripts/upgrade.sh
create mode 100644 apps/drawdb/README.md
create mode 100644 apps/drawdb/data.yml
create mode 100644 apps/drawdb/latest/.env.sample
create mode 100644 apps/drawdb/latest/data.yml
create mode 100644 apps/drawdb/latest/docker-compose.yml
create mode 100755 apps/drawdb/latest/scripts/init.sh
create mode 100755 apps/drawdb/latest/scripts/uninstall.sh
create mode 100755 apps/drawdb/latest/scripts/upgrade.sh
create mode 100644 apps/drawdb/logo-LICENSE.txt
create mode 100644 apps/drawdb/logo.png
diff --git a/apps/drawdb/1.8.1/.env.sample b/apps/drawdb/1.8.1/.env.sample
new file mode 100644
index 000000000..6015d0796
--- /dev/null
+++ b/apps/drawdb/1.8.1/.env.sample
@@ -0,0 +1,2 @@
+PANEL_APP_PORT_HTTP=40930
+CONTAINER_NAME=drawdb-compose-check
diff --git a/apps/drawdb/1.8.1/data.yml b/apps/drawdb/1.8.1/data.yml
new file mode 100644
index 000000000..485f7b202
--- /dev/null
+++ b/apps/drawdb/1.8.1/data.yml
@@ -0,0 +1,19 @@
+additionalProperties:
+ formFields:
+ - default: 40930
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ label:
+ en: Port
+ zh: 端口
+ zh-Hant: 埠
+ ja: ポート
+ ko: 포트
+ ru: Порт
+ ms: Port
+ pt-br: Porta
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/drawdb/1.8.1/docker-compose.yml b/apps/drawdb/1.8.1/docker-compose.yml
new file mode 100644
index 000000000..3bf0cdd6e
--- /dev/null
+++ b/apps/drawdb/1.8.1/docker-compose.yml
@@ -0,0 +1,21 @@
+services:
+ drawdb:
+ image: "ghcr.io/drawdb-io/drawdb:v1.8.1"
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:80"
+ healthcheck:
+ test: ["CMD-SHELL", "wget --spider -q http://127.0.0.1/ || exit 1"]
+ interval: 10s
+ timeout: 5s
+ retries: 10
+ start_period: 10s
+ labels:
+ createdBy: "Apps"
+
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/drawdb/1.8.1/scripts/init.sh b/apps/drawdb/1.8.1/scripts/init.sh
new file mode 100755
index 000000000..9879df4c3
--- /dev/null
+++ b/apps/drawdb/1.8.1/scripts/init.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -euo pipefail
+exit 0
diff --git a/apps/drawdb/1.8.1/scripts/uninstall.sh b/apps/drawdb/1.8.1/scripts/uninstall.sh
new file mode 100755
index 000000000..ab8a8d674
--- /dev/null
+++ b/apps/drawdb/1.8.1/scripts/uninstall.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+docker-compose down --volumes
diff --git a/apps/drawdb/1.8.1/scripts/upgrade.sh b/apps/drawdb/1.8.1/scripts/upgrade.sh
new file mode 100755
index 000000000..9879df4c3
--- /dev/null
+++ b/apps/drawdb/1.8.1/scripts/upgrade.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -euo pipefail
+exit 0
diff --git a/apps/drawdb/README.md b/apps/drawdb/README.md
new file mode 100644
index 000000000..3398cb796
--- /dev/null
+++ b/apps/drawdb/README.md
@@ -0,0 +1,35 @@
+# drawDB
+
+## 产品介绍
+
+drawDB 是一个在浏览器中使用的数据库实体关系图(ERD)编辑器。它无需注册账号,适合设计数据库结构和整理表之间的关系。
+
+## 主要功能
+
+- 创建数据库关系图并编辑表、字段和关系。
+- 导入和导出 SQL,生成数据库迁移内容。
+- 使用官方静态 Web 镜像,无需数据库、缓存或高风险主机权限。
+- 提供 `amd64` 和 `arm64` 镜像。
+
+## 访问说明
+
+安装完成后,通过 1Panel 显示的 HTTP 端口访问 Web 界面。数字固定版本目录对应官方同名 `v` 前缀镜像标签,`latest` 跟随上游最新镜像。
+
+服务端容器只提供静态 Web 应用,不挂载持久化目录,也不保存账号或数据库。请使用 drawDB 的导入、导出和下载功能保存重要设计;清理浏览器数据前应先导出项目。
+
+## Introduction
+
+drawDB is a browser-based entity relationship diagram editor for designing database schemas without creating an account.
+
+## Features
+
+- Create tables, fields, and relationships in a browser-based editor.
+- Import and export SQL and generate migration content.
+- Run the official static web image without a database, cache, or host-level permissions.
+- Support both `amd64` and `arm64` images.
+
+## 参考资料
+
+- 官网:
+- 源码:
+- Docker 构建说明:
diff --git a/apps/drawdb/data.yml b/apps/drawdb/data.yml
new file mode 100644
index 000000000..c18d4b27d
--- /dev/null
+++ b/apps/drawdb/data.yml
@@ -0,0 +1,32 @@
+name: drawDB
+tags:
+ - Tool
+title: 浏览器内的数据库关系图设计工具
+description: 浏览器内的数据库关系图设计工具
+additionalProperties:
+ key: drawdb
+ name: drawDB
+ tags:
+ - Tool
+ type: tool
+ website: https://drawdb.app/
+ document: https://github.com/drawdb-io/drawdb/blob/main/README.md
+ github: https://github.com/drawdb-io/drawdb
+ shortDescZh: 浏览器内的数据库关系图设计工具
+ shortDescEn: A browser-based database diagram editor
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ memoryRequired: 64
+ architectures:
+ - amd64
+ - arm64
+ description:
+ en: A browser-based database diagram editor with SQL import and export tools
+ zh: 浏览器内的数据库关系图设计工具,支持 SQL 导入与导出
+ zh-Hant: 瀏覽器內的資料庫關係圖設計工具,支援 SQL 匯入與匯出
+ ja: SQL のインポートとエクスポートに対応したブラウザ型データベース図エディター
+ ko: SQL 가져오기와 내보내기를 지원하는 브라우저 기반 데이터베이스 다이어그램 편집기
+ ru: Браузерный редактор схем баз данных с импортом и экспортом SQL
+ ms: Penyunting rajah pangkalan data berasaskan pelayar dengan import dan eksport SQL
+ pt-br: Editor de diagramas de banco de dados no navegador com importação e exportação de SQL
diff --git a/apps/drawdb/latest/.env.sample b/apps/drawdb/latest/.env.sample
new file mode 100644
index 000000000..6015d0796
--- /dev/null
+++ b/apps/drawdb/latest/.env.sample
@@ -0,0 +1,2 @@
+PANEL_APP_PORT_HTTP=40930
+CONTAINER_NAME=drawdb-compose-check
diff --git a/apps/drawdb/latest/data.yml b/apps/drawdb/latest/data.yml
new file mode 100644
index 000000000..485f7b202
--- /dev/null
+++ b/apps/drawdb/latest/data.yml
@@ -0,0 +1,19 @@
+additionalProperties:
+ formFields:
+ - default: 40930
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ label:
+ en: Port
+ zh: 端口
+ zh-Hant: 埠
+ ja: ポート
+ ko: 포트
+ ru: Порт
+ ms: Port
+ pt-br: Porta
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/drawdb/latest/docker-compose.yml b/apps/drawdb/latest/docker-compose.yml
new file mode 100644
index 000000000..62fb0a8af
--- /dev/null
+++ b/apps/drawdb/latest/docker-compose.yml
@@ -0,0 +1,21 @@
+services:
+ drawdb:
+ image: "ghcr.io/drawdb-io/drawdb:latest"
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:80"
+ healthcheck:
+ test: ["CMD-SHELL", "wget --spider -q http://127.0.0.1/ || exit 1"]
+ interval: 10s
+ timeout: 5s
+ retries: 10
+ start_period: 10s
+ labels:
+ createdBy: "Apps"
+
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/drawdb/latest/scripts/init.sh b/apps/drawdb/latest/scripts/init.sh
new file mode 100755
index 000000000..9879df4c3
--- /dev/null
+++ b/apps/drawdb/latest/scripts/init.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -euo pipefail
+exit 0
diff --git a/apps/drawdb/latest/scripts/uninstall.sh b/apps/drawdb/latest/scripts/uninstall.sh
new file mode 100755
index 000000000..ab8a8d674
--- /dev/null
+++ b/apps/drawdb/latest/scripts/uninstall.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+docker-compose down --volumes
diff --git a/apps/drawdb/latest/scripts/upgrade.sh b/apps/drawdb/latest/scripts/upgrade.sh
new file mode 100755
index 000000000..9879df4c3
--- /dev/null
+++ b/apps/drawdb/latest/scripts/upgrade.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -euo pipefail
+exit 0
diff --git a/apps/drawdb/logo-LICENSE.txt b/apps/drawdb/logo-LICENSE.txt
new file mode 100644
index 000000000..b0a24f6d0
--- /dev/null
+++ b/apps/drawdb/logo-LICENSE.txt
@@ -0,0 +1,4 @@
+Source: https://github.com/drawdb-io/drawdb/blob/8f4fe7895224123f2465422fcaa2ee2337fd1e4c/src/assets/icon-dark.png
+License: AGPL-3.0-only
+License text: https://github.com/drawdb-io/drawdb/blob/8f4fe7895224123f2465422fcaa2ee2337fd1e4c/LICENSE
+The submitted PNG is a resized and optimized rendering of the upstream icon.
diff --git a/apps/drawdb/logo.png b/apps/drawdb/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..f797d79188822616022f70242b6dbe11f1894b50
GIT binary patch
literal 3665
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
literal 0
HcmV?d00001