mirror of
https://github.com/okxlin/appstore.git
synced 2026-10-30 16:05:49 +00:00
Merge pull request #5836 from okxlin/maint-pr-5816-dokku
Update Dokku to 0.38.27
This commit is contained in:
@@ -1,101 +0,0 @@
|
||||
additionalProperties:
|
||||
formFields:
|
||||
- default: 8080
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Application HTTP Port
|
||||
labelZh: 应用 HTTP 端口
|
||||
label:
|
||||
en: Application HTTP Port
|
||||
zh: 应用 HTTP 端口
|
||||
zh-Hant: 應用程式 HTTP 連接埠
|
||||
ja: アプリ HTTP ポート
|
||||
ko: 애플리케이션 HTTP 포트
|
||||
ru: HTTP-порт приложений
|
||||
ms: Port HTTP Aplikasi
|
||||
pt-br: Porta HTTP das Aplicações
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 8443
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTPS
|
||||
labelEn: Application HTTPS Port
|
||||
labelZh: 应用 HTTPS 端口
|
||||
label:
|
||||
en: Application HTTPS Port
|
||||
zh: 应用 HTTPS 端口
|
||||
zh-Hant: 應用程式 HTTPS 連接埠
|
||||
ja: アプリ HTTPS ポート
|
||||
ko: 애플리케이션 HTTPS 포트
|
||||
ru: HTTPS-порт приложений
|
||||
ms: Port HTTPS Aplikasi
|
||||
pt-br: Porta HTTPS das Aplicações
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 3022
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_SSH
|
||||
labelEn: Git SSH Port
|
||||
labelZh: Git SSH 端口
|
||||
label:
|
||||
en: Git SSH Port
|
||||
zh: Git SSH 端口
|
||||
zh-Hant: Git SSH 連接埠
|
||||
ja: Git SSH ポート
|
||||
ko: Git SSH 포트
|
||||
ru: Порт Git SSH
|
||||
ms: Port Git SSH
|
||||
pt-br: Porta Git SSH
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: dokku.me
|
||||
edit: true
|
||||
envKey: DOKKU_HOSTNAME
|
||||
labelEn: Global Hostname
|
||||
labelZh: 全局域名
|
||||
label:
|
||||
en: Global Hostname
|
||||
zh: 全局域名
|
||||
zh-Hant: 全域主機名稱
|
||||
ja: グローバルホスト名
|
||||
ko: 전역 호스트 이름
|
||||
ru: Глобальное имя хоста
|
||||
ms: Nama Hos Global
|
||||
pt-br: Nome de Host Global
|
||||
required: true
|
||||
type: text
|
||||
- default: /var/lib/dokku
|
||||
edit: true
|
||||
envKey: APP_DATA_DIR
|
||||
labelEn: Data Directory
|
||||
labelZh: 数据目录
|
||||
label:
|
||||
en: Data Directory
|
||||
zh: 数据目录
|
||||
zh-Hant: 資料目錄
|
||||
ja: データディレクトリ
|
||||
ko: 데이터 디렉터리
|
||||
ru: Каталог данных
|
||||
ms: Direktori Data
|
||||
pt-br: Diretório de Dados
|
||||
required: true
|
||||
type: text
|
||||
- default: Asia/Shanghai
|
||||
edit: true
|
||||
envKey: TZ
|
||||
labelEn: Timezone
|
||||
labelZh: 时区
|
||||
label:
|
||||
en: Timezone
|
||||
zh: 时区
|
||||
zh-Hant: 時區
|
||||
ja: タイムゾーン
|
||||
ko: 시간대
|
||||
ru: Часовой пояс
|
||||
ms: Zon Waktu
|
||||
pt-br: Fuso Horário
|
||||
required: true
|
||||
type: text
|
||||
@@ -1,20 +0,0 @@
|
||||
services:
|
||||
dokku:
|
||||
image: "dokku/dokku:0.38.26@sha256:0128539691d4fe8529f83dadd0a500f5f71ba0a6c003c59b8119fc3614d027ec"
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: unless-stopped
|
||||
network_mode: bridge
|
||||
environment:
|
||||
- DOKKU_HOSTNAME=${DOKKU_HOSTNAME}
|
||||
- DOKKU_HOST_ROOT=${APP_DATA_DIR}/home/dokku
|
||||
- DOKKU_LIB_HOST_ROOT=${APP_DATA_DIR}/var/lib/dokku
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- "${APP_DATA_DIR}:/mnt/dokku"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_SSH}:22"
|
||||
- "${PANEL_APP_PORT_HTTP}:80"
|
||||
- "${PANEL_APP_PORT_HTTPS}:443"
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
@@ -1,58 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
ENV_FILE="${ENV_FILE:-$ROOT_DIR/.env}"
|
||||
|
||||
read_env_value() {
|
||||
local key="$1"
|
||||
[[ -f "$ENV_FILE" ]] || return 0
|
||||
local value
|
||||
value="$(sed -n "s/^${key}=//p" "$ENV_FILE" | tail -n 1)"
|
||||
case "$value" in
|
||||
\"*\") value="${value#\"}"; value="${value%\"}" ;;
|
||||
\'*\') value="${value#\'}"; value="${value%\'}" ;;
|
||||
esac
|
||||
printf '%s\n' "$value"
|
||||
}
|
||||
|
||||
configured_value() {
|
||||
local key="$1"
|
||||
local default_value="$2"
|
||||
local value
|
||||
value="${!key:-}"
|
||||
if [[ -z "$value" ]]; then
|
||||
value="$(read_env_value "$key")"
|
||||
fi
|
||||
printf '%s\n' "${value:-$default_value}"
|
||||
}
|
||||
|
||||
resolve_app_path() {
|
||||
local raw="$1"
|
||||
if [[ "$raw" = /* ]]; then
|
||||
printf '%s\n' "$raw"
|
||||
else
|
||||
printf '%s\n' "$ROOT_DIR/${raw#./}"
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_dir() {
|
||||
local path
|
||||
path="$(resolve_app_path "$(configured_value "$1" "$2")")"
|
||||
mkdir -p "$path"
|
||||
}
|
||||
|
||||
ensure_file_parent() {
|
||||
local path
|
||||
local parent
|
||||
path="$(resolve_app_path "$(configured_value "$1" "$2")")"
|
||||
parent="$(dirname "$path")"
|
||||
mkdir -p "$parent"
|
||||
}
|
||||
|
||||
DATA_DIR="$(configured_value APP_DATA_DIR /var/lib/dokku)"
|
||||
if [[ "$DATA_DIR" != /* ]]; then
|
||||
echo "APP_DATA_DIR must be an absolute host path for Dokku" >&2
|
||||
exit 1
|
||||
fi
|
||||
mkdir -p "$DATA_DIR"
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
@@ -1,7 +1,6 @@
|
||||
CONTAINER_NAME=dokku-compose-check
|
||||
PANEL_APP_PORT_HTTP=8080
|
||||
PANEL_APP_PORT_HTTPS=8443
|
||||
PANEL_APP_PORT_SSH=3022
|
||||
DOKKU_HOSTNAME=dokku.me
|
||||
APP_DATA_DIR=/var/lib/dokku
|
||||
TZ=Asia/Shanghai
|
||||
CONTAINER_NAME=dokku-compose-check
|
||||
@@ -0,0 +1,85 @@
|
||||
additionalProperties:
|
||||
formFields:
|
||||
- default: 8080
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Application HTTP Port
|
||||
labelZh: 应用 HTTP 端口
|
||||
label:
|
||||
en: Application HTTP Port
|
||||
zh: 应用 HTTP 端口
|
||||
zh-Hant: 應用程式 HTTP 連接埠
|
||||
ja: アプリ HTTP ポート
|
||||
ko: 애플리케이션 HTTP 포트
|
||||
ru: HTTP-порт приложений
|
||||
ms: Port HTTP Aplikasi
|
||||
pt-br: Porta HTTP das Aplicações
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 8443
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTPS
|
||||
labelEn: Application HTTPS Port
|
||||
labelZh: 应用 HTTPS 端口
|
||||
label:
|
||||
en: Application HTTPS Port
|
||||
zh: 应用 HTTPS 端口
|
||||
zh-Hant: 應用程式 HTTPS 連接埠
|
||||
ja: アプリ HTTPS ポート
|
||||
ko: 애플리케이션 HTTPS 포트
|
||||
ru: HTTPS-порт приложений
|
||||
ms: Port HTTPS Aplikasi
|
||||
pt-br: Porta HTTPS das Aplicações
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 3022
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_SSH
|
||||
labelEn: Git SSH Port
|
||||
labelZh: Git SSH 端口
|
||||
label:
|
||||
en: Git SSH Port
|
||||
zh: Git SSH 端口
|
||||
zh-Hant: Git SSH 連接埠
|
||||
ja: Git SSH ポート
|
||||
ko: Git SSH 포트
|
||||
ru: Порт Git SSH
|
||||
ms: Port Git SSH
|
||||
pt-br: Porta Git SSH
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: dokku.me
|
||||
edit: true
|
||||
envKey: DOKKU_HOSTNAME
|
||||
labelEn: Global Hostname
|
||||
labelZh: 全局域名
|
||||
label:
|
||||
en: Global Hostname
|
||||
zh: 全局域名
|
||||
zh-Hant: 全域主機名稱
|
||||
ja: グローバルホスト名
|
||||
ko: 전역 호스트 이름
|
||||
ru: Глобальное имя хоста
|
||||
ms: Nama Hos Global
|
||||
pt-br: Nome de Host Global
|
||||
required: true
|
||||
type: text
|
||||
- default: Asia/Shanghai
|
||||
edit: true
|
||||
envKey: TZ
|
||||
labelEn: Timezone
|
||||
labelZh: 时区
|
||||
label:
|
||||
en: Timezone
|
||||
zh: 时区
|
||||
zh-Hant: 時區
|
||||
ja: タイムゾーン
|
||||
ko: 시간대
|
||||
ru: Часовой пояс
|
||||
ms: Zon Waktu
|
||||
pt-br: Fuso Horário
|
||||
required: true
|
||||
type: text
|
||||
@@ -1,16 +1,16 @@
|
||||
services:
|
||||
dokku:
|
||||
image: "dokku/dokku:latest"
|
||||
image: "dokku/dokku:0.38.27@sha256:4fb49b29f643265945ef5da3878c7933205a9b60a1ac767f821834c802a56065"
|
||||
container_name: ${CONTAINER_NAME}
|
||||
restart: unless-stopped
|
||||
network_mode: bridge
|
||||
environment:
|
||||
- DOKKU_HOSTNAME=${DOKKU_HOSTNAME}
|
||||
- DOKKU_HOST_ROOT=${APP_DATA_DIR}/home/dokku
|
||||
- DOKKU_LIB_HOST_ROOT=${APP_DATA_DIR}/var/lib/dokku
|
||||
- DOKKU_HOST_ROOT=/var/lib/dokku/home/dokku
|
||||
- DOKKU_LIB_HOST_ROOT=/var/lib/dokku/var/lib/dokku
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- "${APP_DATA_DIR}:/mnt/dokku"
|
||||
- "/var/lib/dokku:/mnt/dokku"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
ports:
|
||||
- "${PANEL_APP_PORT_SSH}:22"
|
||||
Executable
+11
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
DOKKU_DATA_DIR=/var/lib/dokku
|
||||
|
||||
if [[ -L "$DOKKU_DATA_DIR" ]]; then
|
||||
echo "Refusing to use symbolic link as Dokku data directory: $DOKKU_DATA_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p -- "$DOKKU_DATA_DIR"
|
||||
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
|
||||
ENV_FILE="${ENV_FILE:-$ROOT_DIR/.env}"
|
||||
DOKKU_DATA_DIR=/var/lib/dokku
|
||||
|
||||
read_legacy_data_dir() {
|
||||
[[ -f "$ENV_FILE" ]] || return 0
|
||||
|
||||
local line value=''
|
||||
while IFS= read -r line || [[ -n "$line" ]]; do
|
||||
case "$line" in
|
||||
APP_DATA_DIR=*) value="${line#APP_DATA_DIR=}" ;;
|
||||
esac
|
||||
done < "$ENV_FILE"
|
||||
[[ "$value" != *$'\n'* && "$value" != *$'\r'* ]] || {
|
||||
echo "Invalid APP_DATA_DIR value in $ENV_FILE" >&2
|
||||
return 1
|
||||
}
|
||||
case "$value" in
|
||||
\"*\") value="${value#\"}"; value="${value%\"}" ;;
|
||||
\'*\') value="${value#\'}"; value="${value%\'}" ;;
|
||||
esac
|
||||
printf '%s\n' "$value"
|
||||
}
|
||||
|
||||
legacy_data_dir="${APP_DATA_DIR:-$(read_legacy_data_dir)}"
|
||||
if [[ -n "$legacy_data_dir" && "$legacy_data_dir" != "$DOKKU_DATA_DIR" ]]; then
|
||||
cat >&2 <<EOF
|
||||
Dokku upgrade stopped: this installation uses legacy APP_DATA_DIR=$legacy_data_dir.
|
||||
Dokku's official container contract requires the host path $DOKKU_DATA_DIR.
|
||||
Back up and migrate the complete legacy directory to $DOKKU_DATA_DIR, then set the current 1Panel app's Data Directory to $DOKKU_DATA_DIR before retrying the upgrade.
|
||||
No application data was moved automatically.
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -L "$DOKKU_DATA_DIR" ]]; then
|
||||
echo "Refusing to use symbolic link as Dokku data directory: $DOKKU_DATA_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p -- "$DOKKU_DATA_DIR"
|
||||
+15
-3
@@ -20,9 +20,15 @@ Dokku 是面向单机服务器的开源 PaaS,可通过 Git 推送、Dockerfile
|
||||
|
||||
## 数据持久化
|
||||
|
||||
- `APP_DATA_DIR` 必须是宿主机绝对路径,默认 `/var/lib/dokku`。
|
||||
- 该目录挂载到 `/mnt/dokku`,保存 Git 仓库、插件、配置、服务数据和 SSH 状态。
|
||||
- 升级前应备份整个目录,并同时备份 Dokku 创建的应用容器、卷和数据库插件数据。
|
||||
- Dokku 按官方容器部署契约固定使用宿主机 `/var/lib/dokku`,并将其挂载到容器内 `/mnt/dokku`。
|
||||
- 该目录保存 Git 仓库、插件、配置、服务数据和 SSH 状态。为避免不同 Dokku 实例共享并覆盖同一状态,本应用限制为单实例,且不提供自定义数据目录表单。
|
||||
- 升级前应备份整个 `/var/lib/dokku`,并同时备份 Dokku 创建的应用容器、卷和数据库插件数据。
|
||||
|
||||
### 旧版自定义路径迁移
|
||||
|
||||
早期包允许通过 `APP_DATA_DIR` 指定其他宿主机路径。新版本不会自动移动这类持久化数据,也不会在路径不一致时静默启动一个空的 `/var/lib/dokku`。
|
||||
|
||||
升级前请停止 Dokku,完整备份旧目录,将其中的全部内容迁移到 `/var/lib/dokku`,并确认属主、权限以及插件和 SSH 状态无误。然后在当前旧版本的 1Panel 应用参数中,将“数据目录”改为 `/var/lib/dokku`,确认当前实例可正常启动后再选择升级。不要只手工修改安装目录的 `.env`,因为 1Panel 在升级时会从已保存的应用参数重写该文件。若检测到其他非空路径,`upgrade.sh` 会明确中止。
|
||||
|
||||
## 高风险权限说明
|
||||
|
||||
@@ -30,6 +36,12 @@ Dokku 的核心功能必须挂载宿主机 `/var/run/docker.sock`。这相当于
|
||||
|
||||
仅在专用或充分受信任的服务器上安装。不要向不受信任用户开放 Dokku SSH 权限,不要安装来源不明的插件。卸载 Dokku 应用不会自动删除它创建的子容器、镜像、网络和卷,需要管理员按上游流程审计后手工清理。
|
||||
|
||||
## 镜像安全提示
|
||||
|
||||
当前镜像的 Docker 相关工具包含 Trivy 标记为 High 的 Moby/Docker 与 Go 标准库问题,其中包括授权插件绕过、针对恶意容器镜像执行 `docker cp`/压缩归档上传时的宿主机代码执行或文件覆盖风险,以及符号链接目录遍历风险。由于 Dokku 必须直接访问宿主机 Docker Socket,这些问题不能按普通低权限容器处理。
|
||||
|
||||
仅部署受信任镜像和应用源码;不要对不受信任容器执行 `docker cp` 或压缩归档上传;不要向不受信任用户授予 Dokku SSH、插件安装或 Docker 操作权限。后续 Dokku 镜像包含已修复的 Docker/Go 工具链后应尽快升级。
|
||||
|
||||
## 端口与网络风险
|
||||
|
||||
- Dokku 部署的应用可能创建额外端口和 Docker 网络,这些资源不会自动出现在当前应用包的 Compose 文件中。
|
||||
|
||||
+23
-19
@@ -1,33 +1,37 @@
|
||||
name: Dokku
|
||||
tags:
|
||||
- DevOps
|
||||
- PaaS
|
||||
- DevOps
|
||||
- Server
|
||||
title: 基于 Docker 的单机应用部署与生命周期管理平台
|
||||
description: 基于 Docker 的单机应用部署与生命周期管理平台
|
||||
additionalProperties:
|
||||
key: dokku
|
||||
name: Dokku
|
||||
tags:
|
||||
- DevOps
|
||||
- Server
|
||||
- DevOps
|
||||
- Server
|
||||
type: tool
|
||||
website: https://dokku.com
|
||||
document: https://dokku.com/docs/getting-started/install/docker/
|
||||
github: https://github.com/dokku/dokku
|
||||
shortDescZh: 基于 Docker 的单机应用部署与生命周期管理平台
|
||||
shortDescEn: Docker-powered platform for building, deploying, and managing applications on one server
|
||||
shortDescEn: Docker-powered platform for building, deploying, and managing applications
|
||||
on one server
|
||||
crossVersionUpdate: true
|
||||
limit: 1
|
||||
architectures:
|
||||
- amd64
|
||||
- arm64
|
||||
description:
|
||||
en: Build, deploy, and manage applications on a single server through Git pushes, Docker, buildpacks, and plugins.
|
||||
en: Build, deploy, and manage applications on a single server through Git pushes,
|
||||
Docker, buildpacks, and plugins.
|
||||
zh: 通过 Git 推送、Docker、Buildpack 和插件在单台服务器上构建、部署和管理应用。
|
||||
zh-Hant: 透過 Git 推送、Docker、Buildpack 和外掛在單台伺服器上建置、部署和管理應用程式。
|
||||
ja: Gitプッシュ、Docker、Buildpack、プラグインを使用して単一サーバー上のアプリケーションを構築・デプロイ・管理します。
|
||||
ko: Git 푸시, Docker, 빌드팩 및 플러그인을 통해 단일 서버에서 애플리케이션을 빌드, 배포 및 관리합니다.
|
||||
ru: Создавайте, развертывайте и управляйте приложениями на одном сервере с помощью Git, Docker, buildpack и плагинов.
|
||||
ms: Bina, gunakan dan urus aplikasi pada satu pelayan melalui Git, Docker, buildpack dan pemalam.
|
||||
pt-br: Crie, implante e gerencie aplicações em um único servidor com Git, Docker, buildpacks e plugins.
|
||||
type: tool
|
||||
crossVersionUpdate: true
|
||||
limit: 1
|
||||
recommend: 0
|
||||
website: https://dokku.com
|
||||
github: https://github.com/dokku/dokku
|
||||
document: https://dokku.com/docs/getting-started/install/docker/
|
||||
architectures:
|
||||
- amd64
|
||||
- arm64
|
||||
ru: Создавайте, развертывайте и управляйте приложениями на одном сервере с помощью
|
||||
Git, Docker, buildpack и плагинов.
|
||||
ms: Bina, gunakan dan urus aplikasi pada satu pelayan melalui Git, Docker, buildpack
|
||||
dan pemalam.
|
||||
pt-br: Crie, implante e gerencie aplicações em um único servidor com Git, Docker,
|
||||
buildpacks e plugins.
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
PANEL_APP_PORT_HTTP=8080
|
||||
PANEL_APP_PORT_HTTPS=8443
|
||||
PANEL_APP_PORT_SSH=3022
|
||||
DOKKU_HOSTNAME=dokku.me
|
||||
APP_DATA_DIR=/var/lib/dokku
|
||||
TZ=Asia/Shanghai
|
||||
CONTAINER_NAME=dokku-compose-check
|
||||
@@ -1,101 +0,0 @@
|
||||
additionalProperties:
|
||||
formFields:
|
||||
- default: 8080
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelEn: Application HTTP Port
|
||||
labelZh: 应用 HTTP 端口
|
||||
label:
|
||||
en: Application HTTP Port
|
||||
zh: 应用 HTTP 端口
|
||||
zh-Hant: 應用程式 HTTP 連接埠
|
||||
ja: アプリ HTTP ポート
|
||||
ko: 애플리케이션 HTTP 포트
|
||||
ru: HTTP-порт приложений
|
||||
ms: Port HTTP Aplikasi
|
||||
pt-br: Porta HTTP das Aplicações
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 8443
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTPS
|
||||
labelEn: Application HTTPS Port
|
||||
labelZh: 应用 HTTPS 端口
|
||||
label:
|
||||
en: Application HTTPS Port
|
||||
zh: 应用 HTTPS 端口
|
||||
zh-Hant: 應用程式 HTTPS 連接埠
|
||||
ja: アプリ HTTPS ポート
|
||||
ko: 애플리케이션 HTTPS 포트
|
||||
ru: HTTPS-порт приложений
|
||||
ms: Port HTTPS Aplikasi
|
||||
pt-br: Porta HTTPS das Aplicações
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 3022
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_SSH
|
||||
labelEn: Git SSH Port
|
||||
labelZh: Git SSH 端口
|
||||
label:
|
||||
en: Git SSH Port
|
||||
zh: Git SSH 端口
|
||||
zh-Hant: Git SSH 連接埠
|
||||
ja: Git SSH ポート
|
||||
ko: Git SSH 포트
|
||||
ru: Порт Git SSH
|
||||
ms: Port Git SSH
|
||||
pt-br: Porta Git SSH
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: dokku.me
|
||||
edit: true
|
||||
envKey: DOKKU_HOSTNAME
|
||||
labelEn: Global Hostname
|
||||
labelZh: 全局域名
|
||||
label:
|
||||
en: Global Hostname
|
||||
zh: 全局域名
|
||||
zh-Hant: 全域主機名稱
|
||||
ja: グローバルホスト名
|
||||
ko: 전역 호스트 이름
|
||||
ru: Глобальное имя хоста
|
||||
ms: Nama Hos Global
|
||||
pt-br: Nome de Host Global
|
||||
required: true
|
||||
type: text
|
||||
- default: /var/lib/dokku
|
||||
edit: true
|
||||
envKey: APP_DATA_DIR
|
||||
labelEn: Data Directory
|
||||
labelZh: 数据目录
|
||||
label:
|
||||
en: Data Directory
|
||||
zh: 数据目录
|
||||
zh-Hant: 資料目錄
|
||||
ja: データディレクトリ
|
||||
ko: 데이터 디렉터리
|
||||
ru: Каталог данных
|
||||
ms: Direktori Data
|
||||
pt-br: Diretório de Dados
|
||||
required: true
|
||||
type: text
|
||||
- default: Asia/Shanghai
|
||||
edit: true
|
||||
envKey: TZ
|
||||
labelEn: Timezone
|
||||
labelZh: 时区
|
||||
label:
|
||||
en: Timezone
|
||||
zh: 时区
|
||||
zh-Hant: 時區
|
||||
ja: タイムゾーン
|
||||
ko: 시간대
|
||||
ru: Часовой пояс
|
||||
ms: Zon Waktu
|
||||
pt-br: Fuso Horário
|
||||
required: true
|
||||
type: text
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
ENV_FILE="${ENV_FILE:-$ROOT_DIR/.env}"
|
||||
|
||||
read_env_value() {
|
||||
local key="$1"
|
||||
[[ -f "$ENV_FILE" ]] || return 0
|
||||
local value
|
||||
value="$(sed -n "s/^${key}=//p" "$ENV_FILE" | tail -n 1)"
|
||||
case "$value" in
|
||||
\"*\") value="${value#\"}"; value="${value%\"}" ;;
|
||||
\'*\') value="${value#\'}"; value="${value%\'}" ;;
|
||||
esac
|
||||
printf '%s\n' "$value"
|
||||
}
|
||||
|
||||
configured_value() {
|
||||
local key="$1"
|
||||
local default_value="$2"
|
||||
local value
|
||||
value="${!key:-}"
|
||||
if [[ -z "$value" ]]; then
|
||||
value="$(read_env_value "$key")"
|
||||
fi
|
||||
printf '%s\n' "${value:-$default_value}"
|
||||
}
|
||||
|
||||
resolve_app_path() {
|
||||
local raw="$1"
|
||||
if [[ "$raw" = /* ]]; then
|
||||
printf '%s\n' "$raw"
|
||||
else
|
||||
printf '%s\n' "$ROOT_DIR/${raw#./}"
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_dir() {
|
||||
local path
|
||||
path="$(resolve_app_path "$(configured_value "$1" "$2")")"
|
||||
mkdir -p "$path"
|
||||
}
|
||||
|
||||
ensure_file_parent() {
|
||||
local path
|
||||
local parent
|
||||
path="$(resolve_app_path "$(configured_value "$1" "$2")")"
|
||||
parent="$(dirname "$path")"
|
||||
mkdir -p "$parent"
|
||||
}
|
||||
|
||||
DATA_DIR="$(configured_value APP_DATA_DIR /var/lib/dokku)"
|
||||
if [[ "$DATA_DIR" != /* ]]; then
|
||||
echo "APP_DATA_DIR must be an absolute host path for Dokku" >&2
|
||||
exit 1
|
||||
fi
|
||||
mkdir -p "$DATA_DIR"
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 4.8 KiB |
Reference in New Issue
Block a user