调整和iot的通讯机制
This commit is contained in:
parent
64243bfb39
commit
bd0503144d
@ -190,7 +190,6 @@ docker_helper:update_container_config(ContainerNameOrId, iolist_to_binary(Config
|
|||||||
```erlang
|
```erlang
|
||||||
#{
|
#{
|
||||||
container_name => ContainerName,
|
container_name => ContainerName,
|
||||||
container_dir => ContainerDir,
|
|
||||||
create => Create
|
create => Create
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -200,10 +199,15 @@ docker_helper:update_container_config(ContainerNameOrId, iolist_to_binary(Config
|
|||||||
| 字段 | 类型 | 说明 |
|
| 字段 | 类型 | 说明 |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| `container_name` | binary | 容器名称。用于容器创建 URL 的 `name` 参数,也会注入环境变量 `CONTAINER_NAME`。 |
|
| `container_name` | binary | 容器名称。用于容器创建 URL 的 `name` 参数,也会注入环境变量 `CONTAINER_NAME`。 |
|
||||||
| `container_dir` | binary | 容器在 efka 主机上的应用目录。为空时使用 `efka.root_dir/ContainerName/`。 |
|
|
||||||
| `create` | map | Docker create options 的中间结构,由 `iot` 侧构造,`efka` 侧补丁后转为 Docker JSON。 |
|
| `create` | map | Docker create options 的中间结构,由 `iot` 侧构造,`efka` 侧补丁后转为 Docker JSON。 |
|
||||||
|
|
||||||
`docker_deploy_manager` 会根据 `container_name` 和 `container_dir` 确保容器目录存在,并写入 `.container_dir` 指针文件。
|
`docker_deploy_manager` 会根据 `container_name` 按系统默认规则确保容器目录存在。目录固定为:
|
||||||
|
|
||||||
|
```text
|
||||||
|
efka.root_dir/container_name/
|
||||||
|
```
|
||||||
|
|
||||||
|
即使旧客户端在 `params` 中携带 `container_dir`,当前 deploy 流程也会忽略它,避免 HTTP 调用方控制 efka 主机上的写入目录。
|
||||||
|
|
||||||
## 5. create 中间结构
|
## 5. create 中间结构
|
||||||
|
|
||||||
@ -660,7 +664,6 @@ efka 自动补丁后输出:
|
|||||||
task_id => 1001,
|
task_id => 1001,
|
||||||
params => #{
|
params => #{
|
||||||
container_name => <<"my_nginx">>,
|
container_name => <<"my_nginx">>,
|
||||||
container_dir => <<"/data/apps/my_nginx">>,
|
|
||||||
create => #{
|
create => #{
|
||||||
config => #{
|
config => #{
|
||||||
image => <<"docker.io/library/nginx:latest">>,
|
image => <<"docker.io/library/nginx:latest">>,
|
||||||
@ -709,7 +712,7 @@ efka 自动补丁后输出:
|
|||||||
"Healthcheck": {},
|
"Healthcheck": {},
|
||||||
"HostConfig": {
|
"HostConfig": {
|
||||||
"Binds": [
|
"Binds": [
|
||||||
"/data/apps/my_nginx/service.conf:/usr/local/etc/service.conf",
|
"/efka/root/my_nginx/service.conf:/usr/local/etc/service.conf",
|
||||||
"/host/data:/data"
|
"/host/data:/data"
|
||||||
],
|
],
|
||||||
"RestartPolicy": {
|
"RestartPolicy": {
|
||||||
@ -724,7 +727,7 @@ efka 自动补丁后输出:
|
|||||||
|
|
||||||
deploy action 的执行流程:
|
deploy action 的执行流程:
|
||||||
|
|
||||||
1. 根据 `container_name` 和 `container_dir` 确保容器目录存在。
|
1. 根据 `container_name` 和 `efka.root_dir` 确保默认容器目录存在。
|
||||||
2. 启动独立部署进程。
|
2. 启动独立部署进程。
|
||||||
3. 部署进程上报任务事件流。
|
3. 部署进程上报任务事件流。
|
||||||
4. 规范化镜像名:如果镜像最后一段没有 tag,则补 `:latest`。
|
4. 规范化镜像名:如果镜像最后一段没有 tag,则补 `:latest`。
|
||||||
|
|||||||
@ -50,8 +50,7 @@ init([]) ->
|
|||||||
handle_call({deploy, TaskId, Params}, _From, State = #state{root_dir = RootDir, task_map = TaskMap})
|
handle_call({deploy, TaskId, Params}, _From, State = #state{root_dir = RootDir, task_map = TaskMap})
|
||||||
when is_map(Params) ->
|
when is_map(Params) ->
|
||||||
ContainerName = maps:get(container_name, Params),
|
ContainerName = maps:get(container_name, Params),
|
||||||
ContainerDir0 = maps:get(container_dir, Params, <<>>),
|
{ok, ContainerDir} = docker_helper:ensure_container_dir(RootDir, ContainerName),
|
||||||
{ok, ContainerDir} = docker_helper:ensure_container_dir(RootDir, ContainerName, ContainerDir0),
|
|
||||||
{ok, {TaskPid, _Ref}} = docker_deployer:start_monitor(TaskId, ContainerDir, Params),
|
{ok, {TaskPid, _Ref}} = docker_deployer:start_monitor(TaskId, ContainerDir, Params),
|
||||||
logger:debug("[docker_deploy_manager] start deploy task_id: ~p, params: ~p", [TaskId, Params]),
|
logger:debug("[docker_deploy_manager] start deploy task_id: ~p, params: ~p", [TaskId, Params]),
|
||||||
{reply, ok, State#state{task_map = maps:put(TaskPid, TaskId, TaskMap)}};
|
{reply, ok, State#state{task_map = maps:put(TaskPid, TaskId, TaskMap)}};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user