很多人开始自部署之后,最先遇到的问题不是“不会写 compose”,而是“项目一多就乱”。
哪个服务放在哪个目录、上次改过什么环境变量、这个容器到底是 docker compose up -d 起的还是以前手工跑的,时间一久很容易忘。Dockge 的价值就在这里:它不替你发明一套新系统,而是把原本就该落盘保存的 compose.yml 做成一个可视化入口。
它适合什么场景
如果你手里已经有几份 compose.yml,又希望在一台或几台主机上统一管理,Dockge 很合适。
它特别适合下面几类用户:
- 家庭实验室用户,希望把常用服务集中到一个网页里管理。
- 小团队运维,希望减少“登录服务器再翻目录”的重复动作。
- 刚接触自部署的用户,希望看得见配置而不是只记命令。
它的核心思路很简单:把所有 stack 放进一个固定目录,比如 /opt/stacks,然后让 Dockge 去读这个目录。
compose 示例
下面这份配置已经足够跑起来:
services:
dockge:
image: louislam/dockge:1
container_name: dockge
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- /opt/stacks:/opt/stacks
environment:
- DOCKGE_STACKS_DIR=/opt/stacks
这里最关键的是 /opt/stacks:/opt/stacks。左边和右边必须是同一个绝对路径,不要写成相对路径,否则你以为在管理服务器上的 stack,实际可能写进了容器内部目录。
部署命令
建议单独给 Dockge 建一个目录:
mkdir -p ~/apps/dockge
cd ~/apps/dockge
mkdir -p data
sudo mkdir -p /opt/stacks
把上面的内容保存为 compose.yml 后启动:
docker compose up -d
如果你要通过反向代理暴露它,可以后续再补 ports,例如 5001:5001。先在内网跑通,再做公网入口,排错会轻松很多。
上线后怎么用最顺手
我的建议是每个项目一个目录,例如:
/opt/stacks
├── dockge
├── uptime-kuma
├── open-webui
└── nginx-proxy-manager
这样后续新增服务时,只要在 Dockge 里创建 stack,配置就会直接写入对应目录。你还能顺手把 .env、备份脚本、升级说明都放在同一层,维护起来比散落各处清晰很多。
两个容易踩的坑
第一,不要随便给 Dockge “清理数据目录”。./data 里有它自己的配置和状态。
第二,Docker Socket 具备高权限,说明 Dockge 实际上拥有管理宿主机容器的能力。所以它适合自用或可信团队,不适合随便暴露给陌生人访问。
如果你已经有 3 到 5 个 compose 项目,Dockge 基本属于“早上就该装,别等目录乱了再补”的工具。