Files
ros-dpi/docker-compose.with-mysql.yml
T

64 lines
3.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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