Livebook 0.19.10 Docker Compose 部署指南
在一台 Linux 服务器上用 Docker Compose 从零部署 Livebook 0.19.10(GHCR 官方镜像、密码认证、命名卷持久化),覆盖镜像选型、首次登录验证、升级回滚实测与加速器白名单/DATA_PATH/端口冲突排障实录。
Livebook 0.19.10 Docker Compose 部署指南
目标:在一台 Linux 服务器上用 Docker Compose 从零部署 Elixir 生态交互式协作 Notebook——Livebook 0.19.10(hex.pm 当前最新稳定版),完成镜像选型、密码认证、首次登录验证、数据持久化与升级回滚的完整闭环。软件定位与选型背景见 《Livebook 0.19.10 介绍与选型指南》。全文命令与回显均在真实环境(Linux x86_64 服务器,Docker Server 29.9.2 + Docker Compose v5.6.1)实测通过,测试日期 2026-10-31。
一、环境信息
本次部署的目标软件与环境如下:
| 项目 | 值 |
|---|---|
| 部署对象 | Livebook 0.19.10(hex.pm 官方包页当前最新稳定版,查询日期 2026-10-31) |
| 软件定位 | Elixir 生态交互式协作 Notebook(Phoenix Web 应用) |
| 镜像 | ghcr.io/livebook-dev/livebook:0.19.10(镜像内 release 目录实测为 /app/lib/livebook-0.19.10) |
| 服务器系统 | Linux x86_64 |
| Docker | Server 29.9.2 |
| Docker Compose | v5.6.1(v2 插件形态,docker compose 子命令) |
| 访问端口 | 8137(Web,映射容器 8080)、8138(iframe 资源,映射容器 8081) |
| 数据形态 | 命名卷 livebook-data 挂载到 /data(笔记本目录 + 内部配置目录合一) |
| 认证方式 | LIVEBOOK_PASSWORD 密码认证 |
| 测试日期 | 2026-10-31 |
版本取证:Livebook 0.19.10 为 hex.pm 官方包页展示的最新版本(2026-10-31 查询),同时实测镜像内 ls /app/lib/ 输出 livebook-0.19.10,两者一致。
二、镜像选型说明
2.1 官方镜像源与 Tag 策略
Livebook 官方在两个镜像仓库同步发布:
| 镜像 | 仓库 | 说明 |
|---|---|---|
livebook/livebook | Docker Hub | 官方 Docker Hub 镜像(官方 README 与部署文档引用),走 docker.io 源,国内加速器覆盖面广 |
ghcr.io/livebook-dev/livebook | GitHub Container Registry | 官方 GitHub 仓库镜像(官方 README Docker 章节主推),Tag 齐全:latest、nightly、固定版本号、cuda-*(CUDA 支持) |
本次部署锁定 ghcr.io/livebook-dev/livebook:0.19.10(固定版本 tag,升级回滚只需换 tag)。
⚠️ 加速器排障实录:宿主配置了带白名单的镜像加速器(daocloud 源)时,从 Docker Hub 拉取
livebook/livebook:0.19.10实测失败,报错原文:Error response from daemon: error from registry: 🚫 👀-> https://github.com/DaoCloud/public-image-mirror/issues/2328 🔗 这镜像不在白名单. this image is not in the allowlist.处理:改从 GHCR 直连
ghcr.io/livebook-dev/livebook:0.19.10成功;或检查/etc/docker/daemon.json的registry-mirrors白名单。遇到拉取失败先分清报错来自镜像名错误还是加速器拦截。
2.2 拉取镜像
docker pull ghcr.io/livebook-dev/livebook:0.19.9
实测回显(0.19.9 拉取,用于后文升级回滚演练):
0.19.9: Pulling from livebook-dev/livebook
Digest: sha256:22c9a4f0a5836f52f7c6cf30a1467a4646c1fb27a2a7aea1ed793e4735658562
Status: Image is up to date for ghcr.io/livebook-dev/livebook:0.19.9
ghcr.io/livebook-dev/livebook:0.19.9
Status: Image is up to date 表示本地已有该层缓存(0.19.9 与 0.19.10 共享基础层),零下载完成。查看本地镜像(本环境 Docker 29 的镜像列表新增 DISK USAGE/CONTENT SIZE 列):
docker images ghcr.io/livebook-dev/livebook
实测回显:
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
ghcr.io/livebook-dev/livebook:0.19.0 b43d135567e9 990MB 274MB
ghcr.io/livebook-dev/livebook:0.19.10 216af978b930 1.03GB 283MB U
ghcr.io/livebook-dev/livebook:0.19.9 22c9a4f0a583 1.02GB 282MB
ghcr.io/livebook-dev/livebook:latest 216af978b930 1.03GB 283MB U
镜像约 1.03GB(含完整 Elixir/OTP 运行时与依赖)。镜像入口为 Cmd=[/app/bin/server](docker inspect 实测),启动脚本内先拉起 epmd 再 exec ./livebook start。
三、前置条件
部署前逐项确认:
- Docker 与 Compose 可用:
docker version --format 'Server: {{.Server.Version}}'
docker compose version
实测回显:
Server: 29.9.2
Docker Compose version v5.6.1
- 宿主端口未占用:容器内固定监听 8080(Web)与 8081(iframe 资源),需映射宿主端口。本文选 8137/8138,先确认未被占用:
ss -ltn | grep -E ':(8137|8138)\b' || echo "8137/8138 空闲"
实测回显:
8137/8138 空闲
⚠️ 端口排障实录:最初选用 8131,
docker compose up -d实测报failed to bind host port 0.0.0.0:8131/tcp: address already in use——端口在编网阶段才报错,先ss -ltn排查再落 compose 可少走弯路。
-
密码规划:本文使用演示口令
q1w2e3r4q1w2e3r4。注意 Livebook 强制要求LIVEBOOK_PASSWORD至少 12 个字符(官方 README),故将常规 8 位演示口令q1w2e3r4翻倍为 16 位以满足要求;短于 12 位启动即报错(实测回显见 §11.5)。 -
网络规划:如需固定容器网段,先确认目标子网未被占用:
docker network ls -q | xargs docker network inspect 2>/dev/null | grep -oE '"Subnet": "10\.89\.[0-9]+\.0/24"'
实测回显(部署时刻):
"Subnet": "10.89.56.0/24"
"Subnet": "10.89.57.0/24"
"Subnet": "10.89.64.0/24"
⚠️ 子网排障实录:compose 内声明了
10.89.58.0/24,但若该网段已被某张手工创建的网络占用,docker compose up -d实测报invalid pool request: Pool overlaps with other one on this address space。本文最终由 compose 自建网络(去掉手工同名网络后正常),固定网段仅用于多栈互通场景,纯单栈部署可省略networks段。
四、部署步骤
4.1 编写 docker-compose.yaml
在部署目录(本文为 /opt/livebook,按你的服务器惯例调整)创建 docker-compose.yaml:
name: livebook-0.19.10-stack
services:
livebook:
image: ghcr.io/livebook-dev/livebook:0.19.10
container_name: livebook-0.19.10
restart: unless-stopped
ports:
- "8137:8080"
- "8138:8081"
environment:
LIVEBOOK_PASSWORD: q1w2e3r4q1w2e3r4
LIVEBOOK_DATA_PATH: /data
LIVEBOOK_NODE: livebook@127.0.0.1
LIVEBOOK_COOKIE: livebook-cookie-2026
volumes:
- livebook-data:/data
networks:
- livebook-net
networks:
livebook-net:
driver: bridge
ipam:
config:
- subnet: 10.89.58.0/24
volumes:
livebook-data:
逐项说明:
| 项 | 说明 |
|---|---|
name: livebook-0.19.10-stack | 显式项目名;compose 会把版本号中的点规整掉,实际资源前缀为 livebook-01910-stack(如 livebook-01910-stack_livebook-data) |
image | 固定版本 tag,升级/回滚只改这一行 |
container_name | 固定实例名,便于 docker exec/日志排查 |
restart: unless-stopped | 宿主重启后自愈(实测进程被 :init.stop() 停止后也会被拉起,见 §10.3) |
ports | 宿主 8137 → 容器 8080(Web)、8138 → 容器 8081(iframe 资源端口,无 TLS 场景由主站引用) |
LIVEBOOK_PASSWORD | 登录口令,≥12 字符 |
LIVEBOOK_DATA_PATH | 内部配置与状态目录;指向的目录必须已存在,官方推荐直接指向挂载点 /data(根因与排障见 §7.1) |
LIVEBOOK_NODE/LIVEBOOK_COOKIE | 可选。开启 Erlang 分发(远程执行运维命令用),单机可省略;取值见 《Livebook 0.19.10 配置参数详解》 |
volumes | 命名卷持久化 /data——它同时是 LIVEBOOK_HOME(笔记本默认目录,镜像内置默认值 LIVEBOOK_HOME=/data)与 LIVEBOOK_DATA_PATH |
networks/ipam | 固定网段,非必需;仅多栈互通或防网段漂移时保留 |
4.2 启动服务
docker compose up -d
实测回显:
Volume livebook-01910-stack_livebook-data Creating
Volume livebook-01910-stack_livebook-data Created
Container livebook-0.19.10 Creating
Container livebook-0.19.10 Created
Container livebook-0.19.10 Starting
Container livebook-0.19.10 Started
4.3 状态与日志验证
docker compose ps
实测回显(启动约 1 分钟后,健康检查转绿):
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
livebook-0.19.10 ghcr.io/livebook-dev/livebook:0.19.10 "/app/bin/server" livebook 3 minutes ago Up 3 minutes (healthy) 0.0.0.0:8137->8080/tcp, [::]:8137->8080/tcp, 0.0.0.0:8138->8081/tcp, [::]:8138->8081/tcp
docker logs livebook-0.19.10 2>&1 | head -5
实测回显(设置密码认证时,日志不含 token):
[Livebook] Application running at http://localhost:8080/
💡 对比:若未设置
LIVEBOOK_PASSWORD,默认走 token 认证,日志实测回显为[Livebook] Application running at http://localhost:8080/?token=<随机令牌>——首次访问必须携带该 token,生产部署务必设置密码。
宿主端口监听验证:
ss -ltn | grep 8137
实测回显:
LISTEN 0 4096 0.0.0.0:8137 0.0.0.0:*
LISTEN 0 4096 [::]:8137 [::]:*
镜像自带健康检查(docker inspect livebook-0.19.10 --format '{{json .Config.Healthcheck}}' 实测):
{"Test":["CMD-SHELL","wget --no-verbose --tries=1 --spider http://localhost:${LIVEBOOK_PORT-8080}/public/health || exit 1"]}
即每轮用 wget --spider 探测容器内 /public/health 端点,宿主上也可直接验证:
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8137/public/health
实测回显:
200
4.4 首次登录验证
浏览器访问 http://<服务器IP>:8137/,未认证请求被重定向到登录页:
curl -s -o /dev/null -w 'GET / -> %{http_code} redirect=%{redirect_url}\n' http://127.0.0.1:8137/
实测回显:
GET / -> 302 redirect=http://127.0.0.1:8137/authenticate
登录页(/authenticate)含一个密码输入框(页面表单实测字段为 password + _csrf_token)。输入 q1w2e3r4q1w2e3r4 提交后进入主页。用 curl 等价验证:
# 错误口令:页面回显登录表单(200),不跳转
curl -s -o /dev/null -w '%{http_code}\n' -X POST http://127.0.0.1:8137/authenticate -d 'password=wrongpass123'
# 正确口令:302 跳回主页并发会话 Cookie
curl -s -c /tmp/lb-cookie.txt -o /dev/null -w '%{http_code} -> %{redirect_url}\n' -X POST http://127.0.0.1:8137/authenticate -d 'password=q1w2e3r4q1w2e3r4'
# 携带会话访问主页
curl -s -b /tmp/lb-cookie.txt -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8137/
实测回显:
200
302 -> http://127.0.0.1:8137/
200
登录成功后主页即 Livebook 工作台(笔记本列表、新建笔记本、内置 Learn 教程)。至此部署完成。
五、数据持久化说明
Livebook 的落盘数据分两类,本文方案统一落在命名卷 livebook-data(容器内 /data):
| 数据 | 位置(容器内) | 由谁控制 |
|---|---|---|
笔记本文件(.livemd) | /data 根目录及子目录(LIVEBOOK_HOME=/data 为镜像内置默认值,文件选择器默认从此处打开) | 用户在 UI 保存/上传 |
| 内部配置与状态 | /data/livebook_config.v1.ets 等(LIVEBOOK_DATA_PATH=/data) | Livebook 自动维护 |
启动后查看卷内实际内容:
docker exec livebook-0.19.10 ls -la /data
实测回显:
total 12
drwxr-xr-x 2 root root 4096 Oct 31 02:56 .
drwxr-xr-x 1 root root 4096 Oct 31 02:56 ..
-rw-r--r-- 1 root root 889 Oct 31 02:56 livebook_config.v1.ets
留存验证:向卷内写入一个演示笔记本(等价于 UI 里保存的文件),随后跨版本升级再检查(见 §10.4),实测 upgrade-demo.livemd 在 0.19.10 → 0.19.9 → 0.19.10 两次换版本后完整保留。
docker exec livebook-0.19.10 sh -c 'printf "# 升级回滚验证\n\n## Markdown 段落\n\n本文件用于验证升级/回滚后 notebook 数据留存。\n" > /data/upgrade-demo.livemd && ls -la /data/'
实测回显:
total 16
drwxr-xr-x 2 root root 4096 Oct 31 03:10 .
drwxr-xr-x 1 root root 4096 Oct 31 03:04 ..
-rw-r--r-- 1 root root 862 Oct 31 03:06 livebook_config.v1.ets
-rw-r--r-- 1 root root 105 Oct 31 03:10 upgrade-demo.livemd
⚠️ 会话不持久:
LIVEBOOK_SECRET_KEY_BASE默认每次启动随机生成(官方 README),登录会话 Cookie 随重启全部失效,需重新登录。若希望重启后免登录,须显式固定该变量(生成方法见 《Livebook 0.19.10 配置参数详解》)。
六、环境变量表
本文 compose 用到的变量(完整 LIVEBOOK_* 变量体系与生产模板见 《Livebook 0.19.10 配置参数详解》):
| 变量 | 本文取值 | 默认值 | 说明 |
|---|---|---|---|
LIVEBOOK_PASSWORD | q1w2e3r4q1w2e3r4 | 未设(token 认证) | 登录口令,≥12 字符,设置后 token 认证自动关闭 |
LIVEBOOK_DATA_PATH | /data | 用户数据目录下 livebook/ | 内部配置目录;目录必须已存在,官方 Dockerfile 模板亦显式 mkdir -p /data |
LIVEBOOK_NODE | livebook@127.0.0.1 | 未设(不启用分发) | Erlang 长名节点名(必须 FQDN 或 IP);供 livebook rpc 等运维命令使用 |
LIVEBOOK_COOKIE | livebook-cookie-2026 | 每次启动随机 | 分发 cookie,与服务端一致才能远程连接 |
LIVEBOOK_PORT | 未设 | 8080 | Web 端口(容器内),本文用宿主端口映射改对外端口,不改容器内值 |
LIVEBOOK_IFRAME_PORT | 未设 | 8081 | iframe 资源端口(容器内),同样经端口映射对外 |
LIVEBOOK_HOME | 未设(镜像内置 /data) | 操作系统用户 HOME | 笔记本文件默认目录;镜像内已预置为 /data(docker inspect 实测 LIVEBOOK_HOME=/data) |
LIVEBOOK_IP | 未设(镜像内置 ::) | 127.0.0.1(直装时) | 监听地址;镜像内置 LIVEBOOK_IP=::(双栈任意地址),容器场景无需改动 |
镜像内置默认值取证(docker inspect ... --format '{{json .Config.Env}}' 实测节选):
["PATH=/usr/local/sbin:...","LANG=C.UTF-8","HOME=/home/livebook","LIVEBOOK_IP=::","LIVEBOOK_HOME=/data"]
七、配置参数说明
7.1 LIVEBOOK_DATA_PATH 必须指向已存在的目录
这是 Livebook 0.19.10 部署中最容易踩的坑。若把 LIVEBOOK_DATA_PATH 设为一个不存在的子目录(如 /data/.livebook-data),启动实测直接崩溃并无限重启:
ERROR!!! [Livebook] expected LIVEBOOK_DATA_PATH to be a writable directory: /data/.livebook-data
根因定位(官方源码 lib/livebook/config.ex v0.19.10,查询日期 2026-10-31):启动检查 writable_dir?/1 仅做一次 File.stat(path) 并要求 type: :directory 且 access 为 :read_write——它不创建目录,路径不存在时 stat 报 enoent 直接判定不可写。而 /data/.livebook-data 需要父目录 /data 挂载后才有机会创建,首启时序上不存在。
解决方案(官方推荐做法):LIVEBOOK_DATA_PATH 直接指向挂载点本身 /data(官方部署指南的 Dockerfile 模板即 ENV LIVEBOOK_DATA_PATH="/data" 并显式 RUN mkdir -p /data)。改后重启实测日志正常输出 [Livebook] Application running at http://localhost:8080/。
7.2 端口与监听
- 容器内 Web 端口固定 8080、iframe 端口 8081,对外换端口一律用宿主映射(
8137:8080),不改LIVEBOOK_PORT——改了的话健康检查命令${LIVEBOOK_PORT-8080}与映射关系都要跟着动; LIVEBOOK_IP镜像已内置::(IPv4/IPv6 双栈任意地址),ss回显同时出现0.0.0.0:8137与[::]:8137两条 LISTEN 与之对应。
7.3 分发相关可选变量
LIVEBOOK_NODE + LIVEBOOK_COOKIE 开启 Erlang 分发,是使用 livebook rpc 远程执行运维命令的前提(不设时实测 livebook pid 报 Cannot run --rpc-eval if the node is not alive)。单机部署可以不设;完整行为与运维命令实测见 《Livebook 0.19.10 常用 CLI 命令详解》。
八、配置文件挂载
Livebook 没有传统配置文件,配置全部通过环境变量注入;需要挂载的是数据目录。两种方案对比:
| 方案 | 命令形态 | 优点 | 缺点 |
|---|---|---|---|
| 命名卷(本文方案) | volumes: ["livebook-data:/data"] | 不依赖宿主目录属主;compose down 不删数据;迁移靠 docker volume | 宿主直接查看需进卷路径 |
| 绑定挂载 | - /opt/livebook/data:/data | 宿主可直接浏览/备份 .livemd 文件,与 Git 工作流契合 | 需处理属主:官方 README 建议加 -u $(id -u):$(id -g) 让落盘文件归属宿主用户 |
绑定挂载方案的官方推荐形态(官方 README 原文命令):
docker run -p 8080:8080 -p 8081:8081 --pull always -u $(id -u):$(id -g) -v $(pwd):/data ghcr.io/livebook-dev/livebook
两种方案的 /data 语义完全一致(笔记本目录 + 内部配置目录),切换时先停服再迁移卷数据即可。备份策略:定期备份整个 /data(.livemd 笔记本 + livebook_config.v1.ets 配置)。
九、等价 docker run
本文 compose 的等价单命令(用于快速试用或无 compose 环境验证):
docker run -d \
--name livebook-0.19.10 \
--restart unless-stopped \
-p 8137:8080 \
-p 8138:8081 \
-e LIVEBOOK_PASSWORD=q1w2e3r4q1w2e3r4 \
-e LIVEBOOK_DATA_PATH=/data \
-e LIVEBOOK_NODE=livebook@127.0.0.1 \
-e LIVEBOOK_COOKIE=livebook-cookie-2026 \
-v livebook-data:/data \
ghcr.io/livebook-dev/livebook:0.19.10
与 compose 版逐项对应:端口映射、环境变量、命名卷、重启策略一致;官方 README 的最小试用形态则更简(docker run -p 8080:8080 -p 8081:8081 ghcr.io/livebook-dev/livebook,token 认证、数据不持久)。生产建议沿用 compose 固定 tag + 持久卷形态。
十、常用运维命令
10.1 日常状态与日志
docker compose ps # 健康状态(healthy)
docker logs -f livebook-0.19.10 # 跟踪日志(启动行:[Livebook] Application running at http://localhost:8080/)
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8137/public/health # 探活,实测 200
10.2 重启与停止
docker compose restart # 重启服务(实测回显 Container livebook-0.19.10 Restarting / Started)
docker compose stop # 停止
docker compose up -d # 再次拉起
docker compose down # 停止并移除容器与网络(命名卷保留)
⚠️
docker compose down不会删除命名卷livebook-01910-stack_livebook-data;确认废弃才执行docker volume rm livebook-01910-stack_livebook-data(先备份.livemd)。
10.3 进程内优雅停机与自愈
实例开启分发变量后(见 §7.3),可走 release 自带 RPC 优雅停机,实测:
docker exec livebook-0.19.10 /app/bin/livebook rpc ':init.stop()'
实测回显(无输出即停机指令已送达),随后观察到:容器进程退出 → restart: unless-stopped 自动拉起 → 健康检查数秒内恢复:
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8137/public/health
实测回显(自动拉起后):
200
10.4 升级与回滚(实测)
Livebook 数据(.livemd + 配置)与程序版本解耦,升级/回滚 = 换镜像 tag + 重建容器。实测完整流程:
第 1 步:降级演练(0.19.10 → 0.19.9)。修改 compose 中 image 为 ghcr.io/livebook-dev/livebook:0.19.9 后执行:
docker compose up -d
实测回显:
Container livebook-0.19.10 Recreated
Container livebook-0.19.10 Starting
Container livebook-0.19.10 Started
版本与数据验证:
docker exec livebook-0.19.10 /app/bin/livebook version # 实测:livebook 0.19.9
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8137/public/health # 实测:200
docker exec livebook-0.19.10 ls /data | head -5
实测回显(upgrade-demo.livemd 完整保留):
livebook_config.v1.ets
upgrade-demo.livemd
第 2 步:升级回切(0.19.9 → 0.19.10)。把 image 改回 0.19.10 再次 docker compose up -d,实测 livebook 0.19.10、健康检查 200、cat /data/upgrade-demo.livemd 内容逐字保留:
# 升级回滚验证
## Markdown 段落
💡 回滚要点:回滚 = 把 tag 改回旧版本执行
docker compose up -d,数据卷不动即零丢失。唯二需要留意的:(1) 新版本可能在内部配置 ETS 中写入新结构,跨大版本回滚前先备份卷;(2)LIVEBOOK_SECRET_KEY_BASE未固定时,每次重建容器都会话失效、需重新登录(§5)。
十一、常见问题
Q1:拉取镜像报「不在白名单 / not in the allowlist」?
加速器拦截(实测报错原文见 §2.1)。改用 GHCR 源 ghcr.io/livebook-dev/livebook,或清理 /etc/docker/daemon.json 的 registry-mirrors 后重试。
Q2:启动即崩溃重启,日志报 expected LIVEBOOK_DATA_PATH to be a writable directory?
LIVEBOOK_DATA_PATH 指向的目录不存在。Livebook 不自动创建该目录(官方源码 config.ex 的 writable_dir?/1 仅 stat 不 mkdir,实测见 §7.1)。把取值改为挂载点 /data,或确保目录先建好。
Q3:docker compose up -d 报 address already in use?
宿主端口被占(实测 8131 被占报 failed to bind host port 0.0.0.0:8131/tcp: address already in use)。ss -ltn 换一个空闲端口,同步改 compose 的 ports。
Q4:docker compose up -d 报 invalid pool request: Pool overlaps with other one on this address space?
compose 声明的子网与已有网络重叠(实测见 §三)。换空闲网段,或删掉占用网段的手工网络,或干脆去掉 networks 段让 compose 自建。
Q5:登录页提示密码错误 / 密码是多少?
密码即 compose 里的 LIVEBOOK_PASSWORD(本文 q1w2e3r4q1w2e3r4)。设置过短(<12 字符)启动会直接报错(实测回显见下),不会出现「服务正常但密码不生效」:
ERROR!!! [Livebook] cannot start Livebook because LIVEBOOK_PASSWORD must be at least 12 characters
Q6:每次重启都要重新登录?
LIVEBOOK_SECRET_KEY_BASE 默认每次启动随机(官方 README),会话 Cookie 签名失效。设固定值(openssl rand -base64 48 生成,≥64 字符)即可跨重启保持会话;过短实测报 must be at least 64 characters。
十二、参考链接
- 《Livebook 0.19.10 介绍与选型指南》——软件定位、架构与同类对比
- 《Livebook 0.19.10 配置参数详解》——全部
LIVEBOOK_*环境变量逐项详解与生产模板 - 《Livebook 0.19.10 常用 CLI 命令详解》——release 运维命令与 escript CLI 实测
- 官方 README(Docker 章节/环境变量章节/安全章节):https://github.com/livebook-dev/livebook (查询日期 2026-10-31)
- 官方 Docker 部署指南(docker.md,Compose/K8s 模板):https://github.com/livebook-dev/livebook/blob/v0.19.10/docs/deployment/docker.md (查询日期 2026-10-31)
- 版本取证(hex.pm 官方包页):https://hex.pm/packages/livebook (查询日期 2026-10-31)