入门
Docker 参考
milmil Docker Compose 配置的环境变量、profile、卷挂载及反向代理参考。
分步安装流程请参阅安装。本页为运行后的参考手册。
环境变量文件
milmil 将环境变量拆分为两个文件:
.env(仓库根目录)— Compose 层
| 变量 | 默认值 | 用途 |
|---|---|---|
API_PORT | 8080 | API 绑定的宿主机端口 |
WEB_PORT | 3000 | Web UI 绑定的宿主机端口 |
DATA_DIR | ./data | 挂载到容器 /data 的宿主机路径 |
MEDIA_DIR | /mnt/media | 挂载到容器 /media 的宿主机路径(只读) |
DOWNLOAD_DIR | ./downloads | 挂载到容器 /downloads 的宿主机路径 |
POSTGRES_USER | milmil | Postgres 超级用户(仅在 --profile postgres 时使用) |
POSTGRES_PASSWORD | change_me_postgres_password | Postgres 密码 |
POSTGRES_DB | milmil | Postgres 数据库名 |
api/.env — 运行时密钥
| 变量 | 是否必填 | 用途 |
|---|---|---|
JWT_SECRET | ✅ | JWT 签名密钥(≥ 32 字符)。使用 openssl rand -hex 32 生成。 |
DATABASE_URL | ✅ | 参见下方数据库说明 |
MILMIL_ENCRYPTION_KEY | 推荐 | 用于加密存储凭据的 AES-256 密钥。未设置时回退到 JWT_SECRET。 |
REDIS_URL | 否 | 开发环境可留空(使用内存缓存);生产环境设为 redis://redis:6379。 |
REDIS_USERNAME, REDIS_PASSWORD | 否 | 用于 Redis 容器 ACL(API 不直接使用)。 |
ADMIN_USER, ADMIN_PASSWORD | 否 | 首次启动时自动配置管理员账户。参见首次设置。 |
DANDANPLAY_APP_ID, DANDANPLAY_APP_SECRET | 否 | DandanPlay 哈希匹配 + 弹幕功能。 |
完整变量列表请参阅 api/.env.example。
Profiles
docker compose up -d启动:api + web + redis(使用 SQLite 数据库,不含 Postgres)。
docker compose --profile postgres up -d额外启动:Postgres 16 容器。请先在 api/.env 中设置 DATABASE_URL=postgres://...。
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build从本地源码构建镜像,而非从 Docker Hub 拉取。
服务
| 服务 | 端口 | 镜像 |
|---|---|---|
milmil-api | 8080 | milmildev/milmil-api:latest |
milmil-web | 3000 | milmildev/milmil-web:latest |
redis | 6379 | redis:alpine |
postgres | 5432 | postgres:16-alpine(通过 --profile postgres 启用) |
卷挂载
API 容器需要三个挂载点:
volumes:
- ${DATA_DIR:-./data}:/data # app data, transcode cache, SQLite DB
- ${MEDIA_DIR:-/mnt/media}:/media:ro # anime library (read-only)
- ${DOWNLOAD_DIR:-./downloads}:/downloads在 .env 中配置宿主机路径。容器内部始终使用 /data、/media、/downloads,因此 milmil 内的媒体库路径应以 /media/... 开头。
数据库
零配置,数据存储于 /data/milmil.db。推荐用于单用户场景及小型媒体库。
DATABASE_URL=sqlite://data/milmil.db反向代理
Nginx、Caddy 和 Traefik 的配置请参阅专属的反向代理指南。
目录结构
.env
docker-compose.yml
docker-compose.dev.yml
.env