milmilmilmil
入门

Docker 参考

milmil Docker Compose 配置的环境变量、profile、卷挂载及反向代理参考。

分步安装流程请参阅安装。本页为运行后的参考手册。

环境变量文件

milmil 将环境变量拆分为两个文件:

.env(仓库根目录)— Compose 层

变量默认值用途
API_PORT8080API 绑定的宿主机端口
WEB_PORT3000Web UI 绑定的宿主机端口
DATA_DIR./data挂载到容器 /data 的宿主机路径
MEDIA_DIR/mnt/media挂载到容器 /media 的宿主机路径(只读)
DOWNLOAD_DIR./downloads挂载到容器 /downloads 的宿主机路径
POSTGRES_USERmilmilPostgres 超级用户(仅在 --profile postgres 时使用)
POSTGRES_PASSWORDchange_me_postgres_passwordPostgres 密码
POSTGRES_DBmilmilPostgres 数据库名

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-api8080milmildev/milmil-api:latest
milmil-web3000milmildev/milmil-web:latest
redis6379redis:alpine
postgres5432postgres: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

本页内容