使用 Docker Compose 安装

使用 Docker Compose 管理持久化 Lavik 服务。

开始之前

使用原生 Linux/amd64 或 Linux/arm64,Linux 内核至少为 6.1,并启用 io_uring。Docker Desktop 使用 Linux 虚拟机;本示例请为虚拟机至少分配 2 个 CPU 和 2 GiB 内存。ARM Mac 上不要通过 x86 模拟运行 io_uring。示例使用 Minimal beta.1 发布包构建本地镜像,采用内核 TCP 和 io_uring。

使用 Docker Compose v2。先停止普通 Docker 示例:两者占用相同的宿主端口 6379 和 9100。Compose 使用独立项目卷,不会自动复用 lavik-beta1-data。

宿主端口绑定 127.0.0.1。本地评估示例未设置密码,不要公开暴露端口。seccomp:unconfined 允许使用默认 Docker 策略可能禁止的 io_uring,同时放宽系统调用过滤。容器仍以非 root 用户运行、移除 capabilities 并禁止提权。共享或生产主机应使用经过审查且支持 io_uring 的 seccomp 策略,并在允许远程连接之前配置认证和 TLS。

准备项目文件

从 Docker 指南复制 Dockerfile 和 start.sh →

在同一新项目目录,将以下内容保存为 compose.yaml。各命令保持项目名一致,以便复用相同的数据卷。

compose.yaml

Linux · bash
services:
  lavik:
    build: .
    image: lavik-local:0.1.0-beta.1
    ports:
      - "127.0.0.1:6379:6379"
      - "127.0.0.1:9100:9100"
    volumes:
      - lavik-data:/var/lib/lavik
    read_only: true
    tmpfs:
      - /tmp
    cap_drop: [ALL]
    security_opt:
      - no-new-privileges:true
      - seccomp:unconfined
    ulimits:
      memlock:
        soft: 536870912
        hard: 536870912
    mem_limit: 1g
    cpus: 2
    stop_grace_period: 60s
    healthcheck:
      test: ["CMD-SHELL", "test \"$$(redis-cli --raw PING)\" = PONG"]
      interval: 5s
      timeout: 3s
      retries: 24
      start_period: 10s
volumes:
  lavik-data:

示例预分配 512 MiB 数据文件,并将保留内存上限设为 512 MiB。首次启动前按工作负载选择容量;绝不要截断已有数据文件。命名卷保存数据和日志。删除卷会删除数据库,备份应另行保存。

启动与连接

执行 docker compose -p lavik-beta1 up -d --build --wait,等待服务变为 healthy,再执行 docker compose -p lavik-beta1 exec -T lavik redis-cli PING,应返回 PONG。用相同 exec 前缀执行 SET greeting "hello from Lavik" 和 GET greeting。健康检查确认服务响应 PING,不衡量应用延迟或容量。

管理服务

使用 docker compose -p lavik-beta1 ps 和 docker compose -p lavik-beta1 logs --tail 100 lavik 检查服务。使用 docker compose -p lavik-beta1 restart lavik 正常重启。docker compose -p lavik-beta1 down 删除容器和项目网络,但保留数据库卷;再次执行 up -d --wait 恢复服务。除非确实要删除数据库,否则不要加 --volumes 或 -v。保持项目目录和项目名一致。

这是独立服务,不是高可用集群。Meta 管理的主从部署请使用独立集群指南。

主从高可用 →