feat: share named volumes across Docker and rootless Podman updates [CI]
ci/woodpecker/push/main-amd64-build Pipeline was successful

This commit is contained in:
geruipu committed 2026-10-07 01:41:15 +08:00
1 parent 90b3ca4dad
commit 27ac7fb787
16 files changed
+473 -156

No files matched your search

+11 -15
View File
@@ -1,17 +1,6 @@
# Agent:配置和身份都放在同目录的 .data/(挂载到容器的 /etc/monitor)。
#
# 第一次使用:
# mkdir -p .data && sudo chown 1654:1654 .data # 容器以 UID/GID 1654 运行
# MONITOR_JOIN_TOKEN=<加入令牌> MONITOR_SERVER=https://<backend> MONITOR_AGENT_NAME=<名字> \
# docker compose run --rm --entrypoint /usr/local/bin/fleet-enroll agent \
# --server "$MONITOR_SERVER" --join "$MONITOR_JOIN_TOKEN" --name "$MONITOR_AGENT_NAME" --identity-dir /etc/monitor/agent-id
# 再在 .data/agent.json 里写(fleet.identity_dir 要和上面一致):
# {"fleet":{"server":"https://<backend>","identity_dir":"/etc/monitor/agent-id"},"listen":{"bind":"0.0.0.0"},"limits":{"max_total_mbps":100,"max_total_pps":10000}}
# sudo chown -R 1654:1654 .data
# sudo podman compose up -d # Linux rootful Podman;也可用 docker compose
#
# 更新:改 MONITOR_VERSION(或 MONITOR_IMAGE),再 docker compose pull && docker compose up -d。
# 这种方式没有宿主机更新器:管理端的「更新」按钮对它不起作用;要自动更新请用 podman + systemd(docs/deployment.md「容器节点的运行」)。.data 不动,身份和历史都保留。
# Docker 和 rootless/rootful Podman 共用。配置、身份和缓存保存在命名 volume 中。
# docker compose up -d / podman compose up -d(Podman 以普通用户执行即可 rootless)。
# 首次注册、配置导入和自动更新见 docs/deployment.md。
services:
agent:
image: ${MONITOR_IMAGE:-registry.oeo.one/monitor/monitor-agent}:${MONITOR_VERSION:-0.1.1}
@@ -21,7 +10,8 @@ services:
# Probe 要直连 Agent 的 7443(TCP+UDP)和 7444(TCP),用宿主网络,不做端口映射
network_mode: host
volumes:
- ./.data:/etc/monitor
- agent-config:/etc/monitor
- agent-status:/etc/monitor/update-status:ro
- /etc/os-release:/etc/os-release:ro
# 系统目录只读,不加 :z/:Z;SELinux 隔离在容器级别禁用。
- /proc:/host/proc:ro
@@ -43,3 +33,9 @@ services:
# cap_add:
# - NET_RAW
stop_grace_period: 20s
volumes:
agent-config:
name: monitor-agent-config
agent-status:
name: monitor-agent-status
+15
View File
@@ -0,0 +1,15 @@
# Docker / Podman 共用,数据库和原始数据保存在命名 volume 中。
services:
backend:
image: ${MONITOR_IMAGE:-registry.oeo.one/monitor/monitor-backend}:${MONITOR_VERSION:-0.1.1}
container_name: monitor-backend
restart: unless-stopped
ports:
- "127.0.0.1:8080:8080"
environment:
Monitor__InitialAdminPassword: ${MONITOR_INITIAL_ADMIN_PASSWORD:?Set MONITOR_INITIAL_ADMIN_PASSWORD}
volumes:
- backend-data:/data
volumes:
backend-data:
name: monitor-backend-data
+11 -11
View File
@@ -1,13 +1,6 @@
# Probe:身份配置 probe.json 和 Agent 列表缓存 agents.json 都放在同目录的 .data/(挂载到容器的 /etc/monitor)。
#
# 第一次使用:
# mkdir -p .data && sudo chown 1654:1654 .data # 容器以 UID/GID 1654 运行,需要读写这个目录
# 在管理端创建 Probe,下载一次性身份配置,保存为 .data/probe.json(含私钥,权限 600,不要提交到版本控制)
# sudo chown -R 1654:1654 .data # probe.json 的 600 权限要求文件也归容器用户所有
# sudo podman compose up -d # Linux rootful Podman;也可用 docker compose
#
# 更新:改 MONITOR_VERSION(或 MONITOR_IMAGE),再 docker compose pull && docker compose up -d。
# 这种方式没有宿主机更新器:管理端的「更新」按钮对它不起作用;要自动更新请用 podman + systemd(docs/deployment.md「容器节点的运行」)。.data 不动。
# Docker 和 rootless/rootful Podman 共用。配置、身份和缓存保存在命名 volume 中。
# docker compose up -d / podman compose up -d(Podman 以普通用户执行即可 rootless)。
# 首次注册、配置导入和自动更新见 docs/deployment.md。
services:
probe:
image: ${MONITOR_IMAGE:-registry.oeo.one/monitor/monitor-probe}:${MONITOR_VERSION:-0.1.1}
@@ -16,7 +9,8 @@ services:
init: true
network_mode: host
volumes:
- ./.data:/etc/monitor
- probe-config:/etc/monitor
- probe-status:/etc/monitor/update-status:ro
- /etc/os-release:/etc/os-release:ro
read_only: true
tmpfs:
@@ -30,3 +24,9 @@ services:
# cap_add:
# - NET_RAW
stop_grace_period: 20s
volumes:
probe-config:
name: monitor-probe-config
probe-status:
name: monitor-probe-status