Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
donknap committed Nov 27, 2024
1 parent 7f67bed commit 8481836
Show file tree
Hide file tree
Showing 6 changed files with 181 additions and 53 deletions.
3 changes: 2 additions & 1 deletion docs/_sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/override.md)
* [管理外部任务](zh-cn/manual/compose/external.md)
* [批量拉取镜像](zh-cn/manual/compose/image-pull.md)
* **创建镜像**
Expand All @@ -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)
Expand Down
24 changes: 11 additions & 13 deletions docs/zh-cn/manual/compose/create.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 任务进行部署容器。
Expand Down Expand Up @@ -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 任务。



Expand Down
104 changes: 80 additions & 24 deletions docs/zh-cn/manual/compose/env.md
Original file line number Diff line number Diff line change
@@ -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)
15 changes: 6 additions & 9 deletions docs/zh-cn/manual/compose/override.md
Original file line number Diff line number Diff line change
@@ -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)

### 覆盖配置

Expand Down
54 changes: 48 additions & 6 deletions docs/zh-cn/manual/compose/replace-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
34 changes: 34 additions & 0 deletions docs/zh-cn/manual/setting/store.md
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit 8481836

Please sign in to comment.