feat(apipark): 添加 APIPark v1.9.6-beta 的初始配置和部署文件

This commit is contained in:
arch3rPro
2025-12-05 11:32:19 +08:00
parent a03c7bdbc6
commit 0634d58f84
4 changed files with 1 additions and 1 deletions
+26
View File
@@ -0,0 +1,26 @@
version: 2
#certificate: # 证书存放根目录
# dir: /etc/apinto/cert
client:
advertise_urls: # open api 服务的广播地址
- http://172.18.65.22:9400
listen_urls: # open api 服务的监听地址
- http://0.0.0.0:9400
#certificate: # 证书配置,允许使用ip的自签证书
# - cert: server.pem
# key: server.key
gateway:
advertise_urls: # 转发服务的广播地址
- http://172.18.65.22:8099
- https://172.18.65.22:8099
listen_urls: # 转发服务的监听地址
- https://0.0.0.0:8099
- http://0.0.0.0:8099
peer: # 集群间节点通信配置信息
listen_urls: # 节点监听地址
- http://0.0.0.0:9401
advertise_urls: # 节点通信广播地址
- http://172.18.65.22:9401
#certificate: # 证书配置,允许使用ip的自签证书
# - cert: server.pem
# key: server.key
+135
View File
@@ -0,0 +1,135 @@
additionalProperties:
formFields:
- default: 18288
edit: true
envKey: PANEL_APP_PORT_HTTP
required: true
rule: paramPort
type: number
label:
en: Web Port
ja: Webポート
ms: Port Web
pt-br: Porta Web
ru: Веб-порт
ko: 웹 포트
zh-Hant: Web 埠
zh: Web 端口
- default: apipark
envKey: PANEL_DB_NAME
random: true
required: true
rule: paramCommon
type: text
label:
en: Database Name
ja: データベース名
ms: Nama Pangkalan Data
pt-br: Nome do Banco de Dados
ru: Имя базы данных
ko: 데이터베이스 이름
zh-Hant: 資料庫名稱
zh: 数据库名
- default: apipark
envKey: PANEL_DB_ROOT_PASSWORD
random: true
required: true
rule: paramComplexity
type: password
label:
en: Database Root Password
ja: データベースルートパスワード
ms: Kata Laluan Root Pangkalan Data
pt-br: Senha Root do Banco de Dados
ru: Пароль root базы данных
ko: 데이터베이스 루트 비밀번호
zh-Hant: 資料庫 Root 密碼
zh: 数据库 Root 密码
- default: apipark
envKey: PANEL_REDIS_ROOT_PASSWORD
random: true
required: true
rule: paramComplexity
type: password
label:
en: Redis Password
ja: Redis パスワード
ms: Kata Laluan Redis
pt-br: Senha Redis
ru: Пароль Redis
ko: Redis 비밀번호
zh-Hant: Redis 密碼
zh: Redis 密码
- default: admin123
envKey: ADMIN_PASSWORD
random: true
required: true
rule: paramComplexity
type: password
label:
en: Admin Password
ja: 管理者パスワード
ms: Kata Laluan Pentadbir
pt-br: Senha do Administrador
ru: Пароль администратора
ko: 관리자 비밀번호
zh-Hant: 管理員密碼
zh: 管理员密码
- default: Key123qaz
envKey: INFLUXDB_ADMIN_PASSWORD
random: true
required: true
rule: paramComplexity
type: password
label:
en: InfluxDB Admin Password
ja: InfluxDB 管理者パスワード
ms: Kata Laluan Pentadbir InfluxDB
pt-br: Senha do Administrador InfluxDB
ru: Пароль администратора InfluxDB
ko: InfluxDB 관리자 비밀번호
zh-Hant: InfluxDB 管理員密碼
zh: InfluxDB 管理员密码
- default: apipark-token
envKey: INFLUXDB_TOKEN
random: true
required: true
rule: paramCommon
type: text
label:
en: InfluxDB Token
ja: InfluxDB トークン
ms: Token InfluxDB
pt-br: Token InfluxDB
ru: Токен InfluxDB
ko: InfluxDB 토큰
zh-Hant: InfluxDB 權杖
zh: InfluxDB 令牌
- default: "info"
envKey: LOG_LEVEL
required: true
type: select
values:
- label: "DEBUG"
value: "debug"
- label: "INFO"
value: "info"
- label: "WARNING"
value: "warning"
- label: "ERROR"
value: "error"
- label: "FATAL"
value: "fatal"
- label: "PANIC"
value: "panic"
- label: "TRACE"
value: "trace"
label:
en: Log Level
ja: ログレベル
ms: Tahap Log
pt-br: Nível de Log
ru: Уровень логирования
ko: 로그 레벨
zh-Hant: 日誌等級
zh: 日志级别
+259
View File
@@ -0,0 +1,259 @@
services:
apipark:
image: apipark/apipark:v1.9.6-beta
container_name: ${CONTAINER_NAME}
restart: always
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
influxdb:
condition: service_healthy
nsq:
condition: service_started
environment:
- MYSQL_USER_NAME=root
- MYSQL_PWD=${PANEL_DB_ROOT_PASSWORD}
- MYSQL_IP=mysql
- MYSQL_PORT=3306
- MYSQL_DB=${PANEL_DB_NAME}
- ERROR_DIR=work/logs
- ERROR_FILE_NAME=error.log
- ERROR_LOG_LEVEL=${LOG_LEVEL}
- ERROR_EXPIRE=7d
- ERROR_PERIOD=day
- REDIS_ADDR=redis:6379
- REDIS_PWD=${PANEL_REDIS_ROOT_PASSWORD}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- Init=true
- InfluxdbToken=${INFLUXDB_TOKEN}
- NSQ_ADDR=nsq:4150
- NSQ_TOPIC_PREFIX=apipark
ports:
- "${PANEL_APP_PORT_HTTP}:8288"
volumes:
- ./data/apipark:/app/work
networks:
- 1panel-network
labels:
createdBy: "Apps"
mysql:
image: mysql:8.0.37
container_name: ${CONTAINER_NAME}_mysql
restart: always
command:
- "--character-set-server=utf8mb4"
- "--collation-server=utf8mb4_unicode_ci"
environment:
- MYSQL_ROOT_PASSWORD=${PANEL_DB_ROOT_PASSWORD}
- MYSQL_DATABASE=${PANEL_DB_NAME}
- TZ=Asia/Shanghai
expose:
- "3306"
volumes:
- ./data/mysql:/var/lib/mysql
networks:
- 1panel-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
labels:
createdBy: "Apps"
redis:
image: redis:7.2.4
container_name: ${CONTAINER_NAME}_redis
restart: always
command: redis-server --requirepass ${PANEL_REDIS_ROOT_PASSWORD} --appendonly no --logfile redis.log
expose:
- "6379"
volumes:
- ./data/redis:/data
networks:
- 1panel-network
healthcheck:
test: ["CMD", "redis-cli", "-a", "${PANEL_REDIS_ROOT_PASSWORD}", "ping"]
interval: 10s
timeout: 5s
retries: 5
labels:
createdBy: "Apps"
influxdb:
image: influxdb:2.6
container_name: ${CONTAINER_NAME}_influxdb
restart: always
environment:
- DOCKER_INFLUXDB_INIT_USERNAME=admin
- DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_ADMIN_PASSWORD}
- DOCKER_INFLUXDB_INIT_ORG=apipark
- DOCKER_INFLUXDB_INIT_BUCKET=apinto
- DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUXDB_TOKEN}
- DOCKER_INFLUXDB_INIT_MODE=setup
expose:
- "8086"
volumes:
- ./data/influxdb:/var/lib/influxdb2
networks:
- 1panel-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8086/api/v2/health"]
interval: 30s
timeout: 10s
retries: 10
start_period: 60s
labels:
createdBy: "Apps"
loki:
image: grafana/loki:3.2.1
container_name: ${CONTAINER_NAME}_loki
restart: always
user: root
expose:
- "3100"
volumes:
- ./data/loki:/tmp/loki
entrypoint:
- sh
- -euc
- |
mkdir -p /mnt/config
cat <<EOF > /mnt/config/loki-config.yaml
---
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
common:
instance_addr: 127.0.0.1
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
query_range:
results_cache:
cache:
embedded_cache:
enabled: true
max_size_mb: 100
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
limits_config:
max_query_length: 90d
ruler:
alertmanager_url: http://localhost:9093
table_manager:
retention_period: 90d
EOF
/usr/bin/loki -config.file=/mnt/config/loki-config.yaml
networks:
- 1panel-network
labels:
createdBy: "Apps"
nsq:
image: nsqio/nsq:latest
container_name: ${CONTAINER_NAME}_nsq
restart: always
command: /nsqd --broadcast-address=nsq --lookupd-tcp-address=nsqlookupd:4160
depends_on:
- nsqlookupd
expose:
- "4150"
- "4151"
networks:
- 1panel-network
labels:
createdBy: "Apps"
nsqlookupd:
image: nsqio/nsq:latest
container_name: ${CONTAINER_NAME}_nsqlookupd
restart: always
command: /nsqlookupd
expose:
- "4160"
- "4161"
networks:
- 1panel-network
labels:
createdBy: "Apps"
grafana-init:
image: busybox:latest
container_name: ${CONTAINER_NAME}_grafana_init
user: root
command: |
sh -c '
chown -R 472:472 /var/lib/grafana
chmod -R 755 /var/lib/grafana
'
volumes:
- ./data/grafana:/var/lib/grafana
networks:
- 1panel-network
labels:
createdBy: "Apps"
grafana:
image: grafana/grafana:11.3.2
container_name: ${CONTAINER_NAME}_grafana
restart: always
user: "472:472"
environment:
- GF_PATHS_PROVISIONING=/etc/grafana/provisioning
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD}
- GF_INSTALL_PLUGINS=
depends_on:
- loki
- grafana-init
entrypoint:
- sh
- -euc
- |
mkdir -p /etc/grafana/provisioning/datasources
cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
url: http://loki:3100
EOF
/run.sh
expose:
- "3000"
volumes:
- ./data/grafana:/var/lib/grafana
networks:
- 1panel-network
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3000/api/health || exit 1"]
interval: 10s
timeout: 5s
retries: 5
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true
+32
View File
@@ -0,0 +1,32 @@
#!/bin/bash
# APIPark 初始化脚本
# 确保数据目录具有正确的权限
echo "正在初始化 APIPark 数据目录权限..."
# 创建必要的数据目录
mkdir -p ./data/apipark
mkdir -p ./data/mysql
mkdir -p ./data/redis
mkdir -p ./data/influxdb
mkdir -p ./data/loki
mkdir -p ./data/grafana
# 设置 Grafana 目录权限 (用户 ID: 472)
chown -R 472:472 ./data/grafana
chmod -R 755 ./data/grafana
# 设置 MySQL 目录权限 (用户 ID: 999)
chown -R 999:999 ./data/mysql
# 设置 InfluxDB 目录权限
chown -R 1000:1000 ./data/influxdb
# 设置 Redis 目录权限 (用户 ID: 999)
chown -R 999:999 ./data/redis
# 设置 Loki 目录权限 (root)
chown -R 0:0 ./data/loki
echo "数据目录权限设置完成!"