services:
config-mate:
image: tb-config-mate:latest
container_name: tb-config-mate
ports:
- "${CONFIG_MATE_PORT:-3300}:3300"
working_dir: "${DEPLOY_ROOT:?DEPLOY_ROOT is required}"
environment:
APP_ROOT: "${DEPLOY_ROOT:?DEPLOY_ROOT is required}"
APP_TYPE: "${APP_TYPE:-}"
CONFIG_MATE_PASSWORD: "${CONFIG_MATE_PASSWORD:?CONFIG_MATE_PASSWORD is required}"
PORT: "3300"
NO_BROWSER: "1"
TZ: Asia/Shanghai
volumes:
- "${DEPLOY_ROOT:?DEPLOY_ROOT is required}:${DEPLOY_ROOT:?DEPLOY_ROOT is required}"
- /var/run/docker.sock:/var/run/docker.sock
restart: alwaysconfig-mate 是部署控制台容器。
它运行 Web 页面,默认容器内端口是 3300。它通过挂载宿主机的 Docker socket 来操作宿主机上的容器,所以可以在 Web 页面里启动、停止、重启、查看日志、清理数据。
推荐在安装包根目录创建 .config-mate.env:
DEPLOY_ROOT=/opt/sprixin-iotcloud
CONFIG_MATE_PORT=3300
CONFIG_MATE_PASSWORD=请改成一个安全口令Edge 包示例:
DEPLOY_ROOT=/opt/sprixin-iotedge
CONFIG_MATE_PORT=3300
CONFIG_MATE_PASSWORD=请改成一个安全口令APP_TYPE 可以不写。程序会自动识别:
- 有
services/iotcloud就按 Cloud 处理 - 有
services/iotedge就按 Edge 处理 - 如果业务
.env里有APP_TYPE=CLOUD或APP_TYPE=EDGE,也会自动读取
如果你想强制指定,也可以写:
APP_TYPE=CLOUD或:
APP_TYPE=EDGEimage: tb-config-mate:latest使用本地已经加载好的 Config Mate 镜像。
如果现场是离线环境,需要先执行:
docker load -i images/tb-config-mate_latest.tar.gzcontainer_name: tb-config-mate容器固定名称,方便查看:
docker logs tb-config-mate
docker restart tb-config-mateports:
- "${CONFIG_MATE_PORT:-3300}:3300"左边是宿主机端口,右边是容器端口。
如果 .config-mate.env 中写:
CONFIG_MATE_PORT=3301访问地址就是:
http://服务器IP:3301
不写时默认是:
http://服务器IP:3300
working_dir: "${DEPLOY_ROOT:?DEPLOY_ROOT is required}"容器进入后的工作目录。
这里必须是安装包根目录,例如:
DEPLOY_ROOT=/opt/sprixin-iotcloudAPP_ROOT: "${DEPLOY_ROOT:?DEPLOY_ROOT is required}"告诉 Config Mate 当前安装包根目录在哪里。
Config Mate 会从这个目录下读取:
services/iotcloud/.env
services/iotcloud/conf/
或:
services/iotedge/.env
services/iotedge/conf/
APP_TYPE: "${APP_TYPE:-}"应用类型,可选。
可以为空,程序会自动识别 Cloud 或 Edge。
CONFIG_MATE_PASSWORD: "${CONFIG_MATE_PASSWORD:?CONFIG_MATE_PASSWORD is required}"Web 登录口令,必须配置。
因为容器挂载了 Docker socket,权限很高,所以不能裸奔。
PORT: "3300"容器内部 Web 服务端口。
一般不要改。宿主机想换端口,改 CONFIG_MATE_PORT 即可。
NO_BROWSER: "1"表示容器启动后不要尝试自动打开浏览器。
服务器环境必须保留。
TZ: Asia/Shanghai设置容器时区,保证日志时间更符合现场使用习惯。
- "${DEPLOY_ROOT}:${DEPLOY_ROOT}"把安装包根目录挂载进容器。
注意:左右两边路径必须一致。
例如:
- /opt/sprixin-iotcloud:/opt/sprixin-iotcloud这样做是为了让业务 compose 里的相对路径不会错乱,例如:
./data
./conf
./logs
- /var/run/docker.sock:/var/run/docker.sock把宿主机 Docker 控制入口挂载进容器。
Config Mate 就是通过这个 socket 控制宿主机上的 Docker 容器。
这是高权限挂载,所以必须设置登录口令。
restart: always宿主机重启或 Docker 重启后,Config Mate 自动恢复运行。
进入安装包根目录:
cd /opt/sprixin-iotcloud加载镜像:
docker load -i images/tb-config-mate_latest.tar.gz准备环境变量:
cat > .config-mate.env <<EOF
DEPLOY_ROOT=$(pwd)
CONFIG_MATE_PORT=3300
CONFIG_MATE_PASSWORD=请改成一个安全口令
EOF启动:
docker compose --env-file .config-mate.env up -d config-mate如果现场只有旧命令:
docker-compose --env-file .config-mate.env up -d config-matedocker ps --filter name=tb-config-mate
docker logs --tail=100 tb-config-mate访问:
http://服务器IP:3300
如果改了端口,例如 CONFIG_MATE_PORT=3301,则访问:
http://服务器IP:3301
说明 .config-mate.env 里没有配置:
DEPLOY_ROOT=/你的安装包绝对路径说明没有配置登录口令:
CONFIG_MATE_PASSWORD=你的口令检查是否挂载了:
- /var/run/docker.sock:/var/run/docker.sock同时确认宿主机 Docker 正常:
docker ps