Files

61 lines
3.5 KiB
SQL

-- ============================================================
-- Java 应用模板 —— 应用商店热更新(支持选择 Java 版本)
-- 执行方式:在 appstore 数据库中运行此 SQL
-- 执行后在 WFJ Panel 应用商店点击「同步」即可看到新模板
-- ============================================================
-- ─── 扩大端口字段长度,以容纳占位符(如 {{CONTAINER_PORT}} 为 18 字符,原 VARCHAR(16) 不够)───
ALTER TABLE app_ports MODIFY COLUMN host_port VARCHAR(32) NOT NULL COMMENT '宿主机端口';
ALTER TABLE app_ports MODIFY COLUMN container_port VARCHAR(32) NOT NULL COMMENT '容器端口';
-- ─── 主表 ───
-- image 使用 {{JAVA_IMAGE}} 占位符,部署时由用户选择的 Java 版本替换
INSERT INTO app_templates (app_key, name, tagline, description, icon, category, image, container_name, network, restart, hostname, workdir, command, sort_order, is_active)
VALUES (
'java',
'Java 应用',
'运行 Java jar 或 war 文件',
'Java 镜像默认工作目录为 /app。将主机中包含 jar/war 文件的目录挂载到 /app,通过自定义启动命令运行 Java 应用。支持 JVM 参数、环境变量、Profile 等灵活配置。适合部署 Spring Boot、Quarkus 等打包为 jar 的 Java 服务。',
'java',
'运行时',
'{{JAVA_IMAGE}}',
'{{CONTAINER_NAME}}',
'',
'always',
'',
'/app',
'{{START_COMMAND}}',
4,
1
);
SET @java_id = LAST_INSERT_ID();
-- ─── 端口映射:宿主机端口 → 容器端口(Java 应用必须暴露端口才能访问)───
INSERT INTO app_ports (template_id, host_port, container_port, protocol, sort_order) VALUES
(@java_id, '{{HOST_PORT}}', '{{CONTAINER_PORT}}', 'tcp', 0);
-- ─── 挂载卷:宿主机应用目录 → /app ───
INSERT INTO app_volumes (template_id, host_path, container_path, mode, sort_order) VALUES
(@java_id, '{{APP_DIR}}', '/app', 'rw', 0);
-- ─── 用户参数 ───
INSERT INTO app_params (template_id, param_key, label, type, placeholder, default_value, required, options, show_when, sort_order) VALUES
-- Java 版本下拉选择,value 即完整镜像地址
(@java_id, 'JAVA_IMAGE', 'Java 版本', 'select', '', '', 1,
'[{"value":"bitnami/java:latest","label":"Java Latest (最新版)"},{"value":"bitnami/java:21","label":"Java 21 LTS"},{"value":"bitnami/java:17","label":"Java 17 LTS"},{"value":"bitnami/java:11","label":"Java 11 LTS"},{"value":"bitnami/java:8","label":"Java 8 LTS"}]',
NULL, 0),
(@java_id, 'CONTAINER_NAME', '容器名称', 'text', 'java-app', 'java-app', 1, NULL, NULL, 1),
-- 启动命令:完全自定义,支持 JVM 参数、Spring Profile 等
-- 常见示例:
-- java -jar app.jar
-- java -jar app.jar --spring.profiles.active=prod
-- java -Xmx512m -Xms256m -jar app.jar
-- java -Xmx512m -Dserver.port=8080 -jar app.jar --spring.profiles.active=prod
(@java_id, 'START_COMMAND', '启动命令', 'text', 'java -jar app.jar', 'java -jar app.jar', 1, NULL, NULL, 2),
(@java_id, 'APP_DIR', '宿主机应用目录', 'path', '/path/to/app', '', 1, NULL, NULL, 3),
-- 宿主机端口:外部访问端口,默认 8080
(@java_id, 'HOST_PORT', '宿主机端口', 'number', '8080', '8080', 1, NULL, NULL, 4),
-- 容器端口:Java 应用监听端口,需与启动命令中 server.port 一致,默认 8080
(@java_id, 'CONTAINER_PORT', '容器端口', 'number', '8080', '8080', 1, NULL, NULL, 5);