diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 084b023..21a312d 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -15,7 +15,7 @@ * [创建任务](zh-cn/manual/compose/create.md) * [环境变量](zh-cn/manual/compose/env.md) * [替换服务](zh-cn/manual/compose/replace-service.md) - + * [覆盖配置](zh-cn/manual/compose/override.md) * [管理外部任务](zh-cn/manual/compose/external.md) * [批量拉取镜像](zh-cn/manual/compose/image-pull.md) * **创建镜像** @@ -35,6 +35,7 @@ * **系统设置** * [服务器Ip](zh-cn/manual/setting/server.md) * [多环境管理](zh-cn/manual/setting/docker-env.md) + * [应用商店](zh-cn/manual/setting/store.md) * [更新DPanel面板](zh-cn/manual/setting/upgrade.md) * **其它** * [远程管理](zh-cn/manual/system/remote.md) diff --git a/docs/zh-cn/manual/compose/create.md b/docs/zh-cn/manual/compose/create.md index ffdfee1..ba58f78 100644 --- a/docs/zh-cn/manual/compose/create.md +++ b/docs/zh-cn/manual/compose/create.md @@ -8,6 +8,17 @@ ### yaml 来源 +#### 通过应用商店创建 + +> 默认情况下【应用商店】菜单会不会显示出来,需要你先添加一个第三方的应用商店。[如何添加?](/zh-cn/manual/setting/store) + +![compose-store-1](https://cdn.w7.cc/dpanel/compose-store-1.png) + +点击安装后,会跳转至 Compose 【创建任务】页面,完善、修改环境变量及相关信息就可以进行部署容器。 + +通过应用商店安装后,相关的文件会同步至 /dpanel/compose 目录中。\ +为了保证应用商店中的 yaml 文件可以随时更新,在修改 yaml 配置时建议采用[【覆盖配置】](/zh-cn/manual/compose/override) + #### 通过 yaml 文本创建 在 DPanel 面板中,你可以直接通过 yaml 文本创建一个 compose 任务进行部署容器。 @@ -56,19 +67,6 @@ https://ghp.ci/https://raw.githubusercontent.com/Cp0204/CasaOS-AppStore-Play/ref └─ .... ``` -#### 通过指定路径创建 - -> 需要注意的时,这里所指的【服务器路径】是指的容器内部的,并非宿主机。 - -面板会自动发现位于 /dpanel/compose 目录中的 compose 项目。 - -你可以自定指定或是挂载目录,并通过【服务器路径】的方式添加这些 yaml 文件。 - -##### 示例 - -创建面板时挂载宿主机的 /home/app/ 目录到面板的 /compose/ 目录中。 - -通过指定 /compose/test.yaml 路径创建 compose 任务。 diff --git a/docs/zh-cn/manual/compose/env.md b/docs/zh-cn/manual/compose/env.md index ebd74a8..a3edd5f 100644 --- a/docs/zh-cn/manual/compose/env.md +++ b/docs/zh-cn/manual/compose/env.md @@ -1,43 +1,99 @@ # 环境变量 -#### 创建&编辑任务时 +### 定义方式 + +在 compose 中的环境变量分为两种: + +- 直接在某个服务中定义的环境变量 +- 通过 --env-file 指定环境变量文件 + +##### 在服务中定义环境变量 + +``` +services: + nginx: + image: nginx + environment: + PASSWORD: 123456 +``` + +在上面的例子中,对 nginx 服务定义了一个环境变量。在创建容器后,定义的值会注入到容器的环境变量中。 + + +##### 在 .env 文件中定义 + +``` +services: + nginx: + image: nginx + environment: + PASSWORD: # 假如这里的值不为空,则下方的 .env 文件定义的无效 +``` + +在上面的例子中,在 mysql 服务中声明了一定环境变量,但是款对其赋值。这时候可以新建 .env 文件对其赋值。 + +``` +PASSWORD=789456 +``` + +### 多个服务环境变量同名的问题 ``` services: + nginx: + image: nginx + environment: + PASSWORD: mysql: - image: mysql:5.7 + image: mysql environment: - MYSQL_ROOT_PASSWORD: 123456 - MYSQL_DATABASE: - MYSQL_PASSWORD: "123456" + PASSWORD: ``` -在 compose 中可以定义服务所用到的环境变量,这些环境变量在添加任务的时候,可以通过【管理】服务进行修改。 -![compose-env](https://cdn.w7.cc/dpanel/compose-env-1.png) +在上方的例子中,两个服务中都使用了 PASSWORD 环境变量,这时候在 .env 文件中定义的值同时会影响到这两个服务。\ +这样全局式的环境变量有时候并不是期望的效果,如果希望可以分别指定,需要在在定义的环境变量上再加一层【环境变量】。 -#### 运行时修改 -在部署 compose 任务的时候,也可以再次对环境变量进行修改。 +``` +services: + nginx: + image: nginx + environment: + PASSWORD: ${NGINX_PASSWORD} + mysql: + image: mysql + environment: + PASSWORD: ${MYSQL_PASSWORD} +``` -![compose-env](https://cdn.w7.cc/dpanel/compose-env-2.png?a=1) +``` +NGINX_PASSWORD=123456 +MYSQL_PASSWORD=789456 -#### 多 Docker 环境 +``` -如果你有多个【[Docker 环境](zh-cn/manual/setting/docker-env)】在部署你也可以为每个环境新建私有的【[覆盖配置](/zh-cn/manual/compose/override)】。\ -多环境的覆盖配置文件以 环境名.yaml 或是 环境名.yml 命名。 +### 使用环境变量区分环境差异 -假设你当前有两个 docker 环境,分别是 local 及 remote。那么你可以通过下面的方式为每个环境创建私有的覆盖配置。\ -环境级别的覆盖配置优先级最高,你可以在环境配置中对 yaml 中的任何配置进行修改。 +如果你有多个【[Docker 环境](zh-cn/manual/setting/docker-env)】在部署希望根据不同的环境使用不同的镜像版本,可以给 image 声明一个环境变量。 ``` -/dpanel -├─ /compose -│ ├─ /lucky -│ │ ├─ 1.override.yaml 自定义的覆盖配置 -│ │ ├─ local.yaml local 环境的私有配置 -│ │ ├─ remote.yaml remote 环境的私有配置 -│ │ └─ compose.yaml -│ └─ ... -└─ .... +services: + nginx: + image: ${NGINX_IMAGE} + environment: + PASSWORD: 123456 ``` +这样在部署的时候就可以动态的调整应该使用哪个镜像来部署,对于 compose.yaml 中其它的参也可以通过此方便来定义。 + + +### 面板中如何定义? + +要创建 compose 任务时,面板会自动查找 yaml 中的环境变量,并生成列表。\ +在创建任务的时候,你需要给这些值定义其默认值。 + +![compose-env-3](https://cdn.w7.cc/dpanel/compose-env-3.png) + +在部署的时候,可根据当前的情况进行重定义,重定义操作只会影响到本次部署。 + +![compose-env-3](https://cdn.w7.cc/dpanel/compose-env-4.png) diff --git a/docs/zh-cn/manual/compose/override.md b/docs/zh-cn/manual/compose/override.md index 1721c57..5ec9ac5 100644 --- a/docs/zh-cn/manual/compose/override.md +++ b/docs/zh-cn/manual/compose/override.md @@ -1,20 +1,17 @@ # 创建覆盖配置 -在使用第三方的 compose yaml 文件时,大多数我们需要针对自己的情况去修改诸如端口、存储、环境变量等参数。 +在使用远程 yaml 或是应用商店创建 Compose 任务时 \ +通中为了保证原始的 yaml 文件可以随时的更新,一般不直接对原始 yaml 文件进行修改。 -直接去修改第三方的 yaml 文件又显示的不够优雅。后续升级 yaml 文件内容时又要对比对文件。\ -或是在传递给其他人时,容易泄漏一些自己的配置信息。 +但是在部署 compose 时,大多数情况又需要针对自己的情况去修改诸如端口、存储等参数。\ +这时候使用【新建覆盖 yaml】的方式去新建一个差异的 yaml 文件覆盖到原始的 yaml 文件中。 ### 创建覆盖配置文件 -在 DPanel 面板中约定在同级目录中的以 override.yaml 或是 override.yml 结尾的文件为覆盖文件。 +> 覆盖配置文件只需要新建需要变更的配置 -在部署项目时会连带主 yaml 文件一同加载进行部署。 - -> 如果有多个 override.yaml 文件,需要有加载顺序时,请用字典顺序命名。例如 1.override.yaml 2.override.yaml - -如果你有多个 docker 环境,也可以创建【[环境覆盖配置](/zh-cn/manual/compose/env?id=多-docker-环境)】来为每个环境进行适配。 +![compose-override-yaml.png](https://cdn.w7.cc/dpanel/compose-override-yaml.png) ### 覆盖配置 diff --git a/docs/zh-cn/manual/compose/replace-service.md b/docs/zh-cn/manual/compose/replace-service.md index b762a89..c9fd714 100644 --- a/docs/zh-cn/manual/compose/replace-service.md +++ b/docs/zh-cn/manual/compose/replace-service.md @@ -5,13 +5,55 @@ Compose 带来极大便利的同时,有时候也产生了资源浪费的问题 假如用 compose 部署两个 wordpress 项目,会产多个 mysql 数据库。\ 但是在实际中,大部分的做法是让多个 wordpress 共用同一个 mysql 实例,用不同的数据库进行区分。 -为此 DPanel 面板提供了将 compose 中的服务替换为已存在的容器的功能。 - ### 替换服务 -创建 compose 任务时,在【服务列表】-【管理】中,替换当前服务依赖的项目。 +假如在下面的 yaml 中,不想部署 db 服务,让 phpmyadmin 管理你已经存在的 localmysql。可以定义以下覆盖配置。\ +在部署 compose 任务时,取消掉 db 服务的勾选,面板不再会部署 db 服务。 + +> 需要注意的 compose 中的 phpmyadmin 可以访问到 localmysql 时需要将他们加入到同一个网络中 + +``` +services: + db: + image: mysql:5.7 + volumes: + - db_data:/var/lib/mysql + restart: always + ports: + - :3306 + environment: + MYSQL_ROOT_PASSWORD: ${PASSWORD} + MYSQL_DATABASE: ${DATABASE} + MYSQL_PASSWORD: "123456" + networks: + - mysql-phpmyadmin + phpmyadmin: + depends_on: + - db + image: phpmyadmin + restart: always + ports: + - 8080:80 + environment: + - PMA_HOST=db + - MYSQL_ROOT_PASSWORD=password + networks: + - mysql-phpmyadmin +networks: + mysql-phpmyadmin: null +volumes: + db_data: null +``` + +#### 覆盖配置 + +``` +services: + phpmyadmin: + depends_on: !reset + external_links: + - localmysql:db + +``` -在替换服务后,面板会自动将目标容器加入到 compose 所属的网络中,并生成对应的别名。\ -通过此方法,可以让你很好的调配资源。 -![compose-replace](https://cdn.w7.cc/dpanel/compose-replace.png) diff --git a/docs/zh-cn/manual/setting/store.md b/docs/zh-cn/manual/setting/store.md new file mode 100644 index 0000000..46ddcf6 --- /dev/null +++ b/docs/zh-cn/manual/setting/store.md @@ -0,0 +1,34 @@ +# 应用商店 + +### 添加第三方应用商店 + +> DPanel 面板支持同时添加多个应用商店 + +通过【系统】- 【应用商店】-【添加第三方商店】来创建一个应用商店。\ +创建完成后,会在【Compose】菜单中显示【应用商店】菜单。 + +![compose-store-2](https://cdn.w7.cc/dpanel/compose-store-2.png) + +### 更新商店 + +在 DPanel 面板中添加应用商店时,会将商店的数据离线保存至面板的 /dpanel/store 目录中。\ +如果该商店有更新,需要在【应用商店】列表中手动进行更新数据。 + +### 支持类型 + +只要符合 docker compose 的规范,都可以接入到 DPanel 的第三方应用商店中。\ +DPanel 面板需要根据不同的规范协议解析出商店的说明信息。 + +欢迎大家提交 Issue 丰富第三方应用商店,目前支持以下两种规范的商店。 + +|商店类型|示例仓库|说明| +|---|---|---| +|1panel|https://github.com/1Panel-dev/appstore|[规范说明](https://github.com/1Panel-dev/appstore/wiki/%E5%A6%82%E4%BD%95%E6%8F%90%E4%BA%A4%E8%87%AA%E5%B7%B1%E6%83%B3%E8%A6%81%E7%9A%84%E5%BA%94%E7%94%A8)| +|CasaOS|https://github.com/Cp0204/CasaOS-AppStore-Play|[规范说明](https://awesome.casaos.io/content/3rd-party-app-stores/create-your-first-custom-appstore.html)| + +### 全商店搜索 + +在多个不同的应用商店中,难免会出现相同或是差异的应用。在 DPanel 面板中,提供了检索所有商店的功能。\ +方便快速的去查找自己需要的的应用。 + +![compose-store-3](https://cdn.w7.cc/dpanel/compose-store-3.png) \ No newline at end of file