64 lines
3.4 KiB
YAML
64 lines
3.4 KiB
YAML
# ROS-DPI + 自带 MySQL(适合还没有 MySQL 的用户)
|
||
# 已有 MySQL 请改用 docker-compose.yml。
|
||
# 用法:保存为 docker-compose.yml,在旁边的 .env 文件里设置两个密码(示例见下),把 LAN_CIDRS 改成你的内网网段,然后 docker compose up -d
|
||
# .env 内容示例:
|
||
# MYSQL_PASSWORD=改成强密码
|
||
# MYSQL_ROOT_PASSWORD=改成另一个强密码
|
||
# 不设置密码 compose 会直接报错(避免带着默认密码裸奔上网)。
|
||
# MySQL 容器首次启动会自动建好 rosdpi 库和账号;连接串已写好,网页上不会出现数据库设置,只需设置管理员密码
|
||
services:
|
||
ros-dpi:
|
||
image: suyijun8182/ros-dpi:latest # 也可用 ghcr.io/suyijun8182/ros-dpi:latest
|
||
container_name: ros-dpi
|
||
restart: unless-stopped
|
||
depends_on:
|
||
mysql:
|
||
condition: service_healthy
|
||
ports:
|
||
- "8080:8080/tcp" # Web 界面;只想让内网访问可写成 "192.168.88.10:8080:8080/tcp"(绑定本机内网 IP)
|
||
- "2055:2055/udp" # IPFIX / NetFlow:RouterOS Traffic Flow 发到这里
|
||
- "37008:37008/udp" # TZSP:RouterOS 镜像的 DNS 应答和 HTTPS/QUIC 握手包发到这里
|
||
environment:
|
||
TZ: Asia/Shanghai
|
||
# 密码取自 .env 里的 MYSQL_PASSWORD,与 MySQL 容器保持一致
|
||
DATABASE_URL: mysql+pymysql://rosdpi:${MYSQL_PASSWORD:?请在 .env 里设置 MYSQL_PASSWORD}@mysql:3306/rosdpi?charset=utf8mb4
|
||
# 「必改」内网网段,逗号分隔(之后也可在 系统设置 → 网络 里改)
|
||
LAN_CIDRS: 192.168.88.0/24
|
||
# 管理员 admin 的初始密码;留空则首次打开网页时设置
|
||
# 「建议设置」留空时,在你打开网页设置密码之前,任何能访问 8080 的人都可以抢先设置管理员
|
||
ADMIN_PASSWORD: ""
|
||
# RouterOS 只读 API(可选:显示主机名、WAN 速率)
|
||
ROS_URL: "" # 例如 https://192.168.88.1
|
||
ROS_USER: ""
|
||
ROS_PASSWORD: ""
|
||
ROS_VERIFY_TLS: "false"
|
||
volumes:
|
||
- ./data:/app/data
|
||
|
||
mysql:
|
||
image: mysql:8.4
|
||
container_name: ros-dpi-mysql
|
||
restart: unless-stopped
|
||
mem_limit: 768m # 与下方 innodb-buffer-pool-size 对齐,小主机上不会吃满内存
|
||
environment:
|
||
TZ: Asia/Shanghai
|
||
MYSQL_DATABASE: rosdpi # 首次启动自动创建库和账号,表由 ROS-DPI 自动建立
|
||
MYSQL_USER: rosdpi
|
||
MYSQL_PASSWORD: ${MYSQL_PASSWORD:?请在 .env 里设置 MYSQL_PASSWORD}
|
||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?请在 .env 里设置 MYSQL_ROOT_PASSWORD}
|
||
command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci", "--innodb-buffer-pool-size=256M"]
|
||
volumes:
|
||
- ./mysql:/var/lib/mysql
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 20
|
||
|
||
# 社区共享库:社区主站目前只有 IPv6 地址,而 Docker 默认网桥没有 IPv6 出口,容器会连不上主站
|
||
# (设置页显示“连接失败:本机没有 IPv6 出口”)。Docker 27 及以上取消下面 3 行注释即可(自动分配地址并做 NAT);
|
||
# 更老的 Docker(群晖 / 部分 NAS 自带的版本)请改用 Linux 一键安装,或在 daemon.json 里开启 ipv6 + ip6tables。
|
||
# networks:
|
||
# default:
|
||
# enable_ipv6: true
|