LibreSpeed Docker容器化部署最佳实践
本文详细介绍了LibreSpeed的Docker容器化部署方案,涵盖了从基础镜像获取、快速启动命令到生产环境的Docker Compose部署配置。内容包括三种运行模式(独立模式、后端模式、前端模式)的详细配置方法,环境变量参数详解,数据持久化策略以及多节点架构部署方案,为不同规模的部署需求提供完整的技术指导。
Docker镜像获取与快速启动指南
LibreSpeed提供了官方Docker镜像,让用户能够快速部署和使用这个轻量级的网络速度测试工具。本章节将详细介绍如何获取Docker镜像以及各种快速启动方式。
官方镜像源与版本信息
LibreSpeed的官方Docker镜像托管在GitHub Packages上,提供了稳定可靠的镜像分发服务。镜像每周自动构建一次,确保包含最新的IP信息数据库和安全补丁。
镜像地址信息:
- 官方镜像仓库:
ghcr.io/librespeed/speedtest - 最新版本标签:
latest - 特定版本标签: 支持语义化版本标签
基础快速启动命令
对于想要快速体验LibreSpeed的用户,可以使用以下最简单的启动命令:
docker run -p 80:80 -d --name speedtest --rm ghcr.io/librespeed/speedtest
这个命令会:
- 拉取最新的LibreSpeed镜像(如果本地不存在)
- 在后台运行容器(
-d参数) - 将容器内的80端口映射到主机的80端口(
-p 80:80) - 设置容器名称为
speedtest(--name speedtest) - 容器停止后自动删除(
--rm)
启动完成后,通过浏览器访问 http://your-server-ip 即可使用速度测试功能。
Docker Compose部署方式
对于生产环境,推荐使用Docker Compose进行部署,便于管理和维护配置。以下是基础的docker-compose.yml配置:
version: '3.7'
services:
speedtest:
container_name: speedtest
image: ghcr.io/librespeed/speedtest:latest
restart: always
environment:
MODE: standalone
TITLE: "LibreSpeed"
TELEMETRY: "false"
ports:
- "80:80"
使用Docker Compose启动服务:
# 启动服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 停止服务
docker-compose down
不同运行模式的启动示例
LibreSpeed支持多种运行模式,以下是各模式的启动示例:
1. 独立模式(Standalone)带数据持久化
docker run -d \
--name speedtest \
-p 8080:80 \
-e MODE=standalone \
-e TELEMETRY=true \
-e PASSWORD="yourSecurePassword" \
-v ./database:/database \
ghcr.io/librespeed/speedtest
2. 后端模式(Backend Only)
docker run -d \
--name speedtest-backend \
-p 8081:80 \
-e MODE=backend \
ghcr.io/librespeed/speedtest
3. 前端模式(Frontend)多服务器配置
docker run -d \
--name speedtest-frontend \
-p 8082:80 \
-e MODE=frontend \
-v ./servers.json:/servers.json \
ghcr.io/librespeed/speedtest
端口映射配置参考表
根据实际需求,可以灵活配置端口映射:
| 使用场景 | 主机端口 | 容器端口 | 示例命令 |
|---|---|---|---|
| 标准HTTP | 80 | 80 | -p 80:80 |
| 自定义端口 | 8080 | 80 | -p 8080:80 |
| HTTPS代理 | 443 | 80 | -p 443:80 |
| 多实例 | 8081,8082,... | 80 | -p 8081:80 -p 8082:80 |
环境变量配置速查
以下表格列出了常用的环境变量及其作用:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
MODE | standalone | 运行模式:standalone/backend/frontend/dual |
TITLE | LibreSpeed | 速度测试页面标题 |
TELEMETRY | false | 是否启用数据收集 |
WEBPORT | 80 | 容器内Web服务器端口 |
PASSWORD | - | 统计页面访问密码 |
ENABLE_ID_OBFUSCATION | false | 是否启用ID混淆 |
REDACT_IP_ADDRESSES | false | 是否隐藏IP地址 |
数据持久化配置
为了确保测试数据在容器重启后不丢失,需要配置数据卷挂载:
# SQLite数据库持久化
docker run -d \
-p 80:80 \
-v ./speedtest-data:/database \
-e TELEMETRY=true \
ghcr.io/librespeed/speedtest
# 服务器配置文件持久化(前端模式)
docker run -d \
-p 80:80 \
-v ./servers.json:/servers.json \
-v ./speedtest-data:/database \
-e MODE=frontend \
ghcr.io/librespeed/speedtest
容器管理常用命令
掌握以下Docker命令有助于更好地管理LibreSpeed容器:
# 查看运行中的容器
docker ps
# 查看容器日志
docker logs speedtest
# 进入容器shell
docker exec -it speedtest bash
# 停止容器
docker stop speedtest
# 删除容器
docker rm speedtest
# 更新镜像(先停止旧容器)
docker pull ghcr.io/librespeed/speedtest:latest
故障排查与日志查看
如果容器启动失败,可以通过以下方式排查问题:
# 查看详细日志
docker logs speedtest --details
# 以交互模式启动(便于调试)
docker run -it --rm -p 80:80 ghcr.io/librespeed/speedtest
# 检查容器状态
docker inspect speedtest
通过上述指南,您可以快速获取并启动LibreSpeed Docker镜像,根据实际需求选择合适的运行模式和配置方式。Docker化部署大大简化了安装和配置过程,让网络速度测试服务的部署变得更加便捷高效。
独立模式、后端模式、前端模式配置
LibreSpeed Docker容器提供了三种主要的运行模式:独立模式(Standalone)、后端模式(Backend)和前端模式(Frontend)。每种模式都有其特定的应用场景和配置要求,下面将详细介绍这三种模式的配置方法。
独立模式(Standalone Mode)
独立模式是最简单的部署方式,适用于单服务器环境。在这种模式下,LibreSpeed同时提供Web界面和测试后端服务。
环境变量配置
独立模式通过设置 MODE=standalone 环境变量来启用,支持以下关键配置选项:
| 环境变量 | 默认值 | 描述 |
|---|---|---|
MODE | standalone | 运行模式设置为独立模式 |
TITLE | LibreSpeed | 测速页面显示的标题 |
TELEMETRY | false | 是否启用测试结果收集功能 |
ENABLE_ID_OBFUSCATION | false | 是否启用测试ID混淆 |
REDACT_IP_ADDRESSES | false | 是否对IP地址进行脱敏处理 |
PASSWORD | 无 | 统计页面访问密码 |
EMAIL | 无 | GDPR请求联系邮箱 |
DISABLE_IPINFO | false | 是否禁用IP信息查询 |
IPINFO_APIKEY | 无 | ipinfo.io API密钥 |
DISTANCE | km | 距离单位(km/mi) |
WEBPORT | 80 | Web服务器监听端口 |
DB_TYPE | sqlite | 数据库类型(sqlite/mysql/postgresql) |
数据库配置示例
对于不同的数据库类型,需要配置相应的连接参数:
# MySQL数据库配置
DB_TYPE: mysql
DB_HOSTNAME: mysql-server
DB_PORT: 3306
DB_NAME: speedtest_db
DB_USERNAME: speedtest_user
DB_PASSWORD: secure_password
# PostgreSQL数据库配置
DB_TYPE: postgresql
DB_HOSTNAME: postgres-server
DB_NAME: speedtest_db
DB_USERNAME: speedtest_user
DB_PASSWORD: secure_password
# SQLite数据库配置(默认)
DB_TYPE: sqlite
Docker Compose 配置示例
version: '3.7'
services:
speedtest:
image: ghcr.io/librespeed/speedtest:latest
container_name: speedtest-standalone
restart: always
environment:
MODE: standalone
TELEMETRY: "true"
ENABLE_ID_OBFUSCATION: "true"
REDACT_IP_ADDRESSES: "false"
PASSWORD: "your_secure_password"
EMAIL: "admin@example.com"
DB_TYPE: "mysql"
DB_HOSTNAME: "mysql-db"
DB_PORT: "3306"
DB_NAME: "speedtest"
DB_USERNAME: "speedtest_user"
DB_PASSWORD: "db_password"
WEBPORT: "8080"
ports:
- "8080:8080"
volumes:
- ./database:/database
depends_on:
- mysql-db
mysql-db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: "root_password"
MYSQL_DATABASE: "speedtest"
MYSQL_USER: "speedtest_user"
MYSQL_PASSWORD: "db_password"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
独立模式架构图
后端模式(Backend Mode)
后端模式专门用于提供测速API服务,不包含Web界面。这种模式适用于多服务器部署场景,其中前端界面与后端服务分离。
环境变量配置
后端模式通过设置 MODE=backend 环境变量启用,配置相对简单:
| 环境变量 | 默认值 | 描述 |
|---|---|---|
MODE | backend | 运行模式设置为后端模式 |
IPINFO_APIKEY | 无 | ipinfo.io API密钥(可选) |
提供的API端点
后端模式提供以下关键API端点:
| 端点 | 功能描述 |
|---|---|
garbage.php | 下载速度测试端点 |
empty.php | 上传速度测试和ping测试端点 |
getIP.php | 获取客户端IP信息端点 |
Docker运行示例
# 简单后端模式启动
docker run -d \
--name speedtest-backend \
-e MODE=backend \
-p 8081:80 \
ghcr.io/librespeed/speedtest:latest
# 带IP信息查询的后端模式
docker run -d \
--name speedtest-backend-with-ipinfo \
-e MODE=backend \
-e IPINFO_APIKEY="your_ipinfo_api_key" \
-p 8081:80 \
ghcr.io/librespeed/speedtest:latest
后端模式架构
前端模式(Frontend Mode)
前端模式专门用于提供Web界面,并可以连接多个后端测速服务器。这种模式适用于大型网络环境,需要从多个地理位置进行测速。
环境变量配置
前端模式通过设置 MODE=frontend 环境变量启用,支持与独立模式相同的环境变量配置。
servers.json 配置文件
前端模式需要提供一个 servers.json 文件来定义可用的测速服务器:
[
{
"name": "北京数据中心-电信",
"server": "//beijing-telecom.example.com/",
"dlURL": "garbage.php",
"ulURL": "empty.php",
"pingURL": "empty.php",
"getIpURL": "getIP.php"
},
{
"name": "上海数据中心-联通",
"server": "//shanghai-unicom.example.com/",
"dlURL": "garbage.php",
"ulURL": "empty.php",
"pingURL": "empty.php",
"getIpURL": "getIP.php"
},
{
"name": "广州数据中心-移动",
"server": "https://guangzhou-mobile.example.com/",
"dlURL": "garbage.php",
"ulURL": "empty.php",
"pingURL": "empty.php",
"getIpURL": "getIP.php"
}
]
服务器配置说明
| 字段 | 必需 | 描述 |
|---|---|---|
name | 是 | 服务器显示名称 |
server | 是 | 服务器基础URL,可使用//表示协议自适应 |
dlURL | 是 | 下载测试端点,通常为garbage.php |
ulURL | 是 | 上传测试端点,通常为empty.php |
pingURL | 是 | Ping测试端点,通常为empty.php |
getIpURL | 是 | IP查询端点,通常为getIP.php |
Docker Compose 前端模式配置
version: '3.7'
services:
speedtest-frontend:
image: ghcr.io/librespeed/speedtest:latest
container_name: speedtest-frontend
restart: always
environment:
MODE: frontend
TELEMETRY: "true"
ENABLE_ID_OBFUSCATION: "true"
PASSWORD: "stats_password"
EMAIL: "admin@example.com"
WEBPORT: "8080"
ports:
- "8080:8080"
volumes:
- ./servers.json:/servers.json
- ./database:/database
# 可选的数据库服务
mysql-db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: "root_pass"
MYSQL_DATABASE: "speedtest"
MYSQL_USER: "speedtest"
MYSQL_PASSWORD: "speedtest_pass"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
前端模式架构图
多服务器测速流程
配置最佳实践
安全配置建议
- 密码安全:使用强密码保护统计页面访问
- IP脱敏:在生产环境中启用
REDACT_IP_ADDRESSES保护用户隐私 - ID混淆:启用
ENABLE_ID_OBFUSCATION防止数据库ID暴露 - HTTPS强制:确保所有服务器连接使用HTTPS协议
性能优化建议
- 数据库选择:高并发场景推荐使用MySQL或PostgreSQL
- 连接池配置:数据库连接适当配置连接池参数
- 缓存策略:对静态资源实施缓存策略
- 负载均衡:多后端服务器时配置负载均衡
监控与维护
- 日志监控:定期检查容器日志和数据库性能
- 数据备份:定期备份测试结果数据
- 版本更新:定期更新到最新版本的LibreSpeed
- 性能测试:定期对测速服务器本身进行性能测试
通过合理配置这三种运行模式,可以根据实际业务需求构建灵活、可扩展的测速服务架构,满足从简单单服务器部署到复杂多地域分布式测速的各种场景需求。
环境变量参数详解与持久化存储
在LibreSpeed的Docker容器化部署中,环境变量是实现配置灵活性的关键机制。通过合理设置环境变量,您可以轻松定制测速服务器的各项功能,从基本的外观设置到复杂的数据库连接配置。
核心环境变量详解
LibreSpeed提供了丰富多样的环境变量来满足不同部署场景的需求。以下表格详细列出了所有可用的环境变量及其功能:
| 环境变量 | 默认值 | 描述 | 适用模式 |
|---|---|---|---|
MODE | - | 运行模式:standalone(独立)、backend(后端)、frontend(前端)、dual(双模式) | 所有模式 |
TITLE | "LibreSpeed" | 测速页面显示的标题 | standalone, frontend, dual |
TELEMETRY | "false" | 是否启用测试结果收集功能 | standalone, frontend, dual |
ENABLE_ID_OBFUSCATION | "false" | 启用测试ID混淆,增强隐私保护 | standalone, frontend, dual |
REDACT_IP_ADDRESSES | "false" | 启用IP地址脱敏,保护用户隐私 | standalone, frontend, dual |
PASSWORD | - | 统计页面访问密码 | standalone, frontend, dual |
EMAIL | - | GDPR请求联系邮箱 | standalone, frontend, dual |
DISABLE_IPINFO | "false" | 禁用IP信息查询功能 | 所有模式 |
IPINFO_APIKEY | - | ipinfo.io API密钥,用于精确地理位置查询 | 所有模式 |
DISTANCE | "km" | 距离单位:km(公里)、mi(英里)或空字符串禁用 | standalone, frontend, dual |
WEBPORT | 80 | Web服务器监听端口 | 所有模式 |
DB_TYPE | "sqlite" | 数据库类型:sqlite、mysql、postgresql | standalone, frontend, dual |
DB_HOSTNAME | - | 数据库服务器主机名或IP地址 | standalone, frontend, dual |
DB_PORT | - | 数据库端口(MySQL专用) | standalone, frontend, dual |
DB_NAME | - | 数据库名称 | standalone, frontend, dual |
DB_USERNAME | - | 数据库用户名 | standalone, frontend, dual |
DB_PASSWORD | - | 数据库密码 | standalone, frontend, dual |
数据库配置环境变量深度解析
当启用遥测功能(TELEMETRY=true)时,数据库配置变得至关重要。LibreSpeed支持多种数据库后端,每种都有特定的环境变量要求:
SQLite配置(默认)
DB_TYPE=sqlite
# 无需额外配置,数据自动存储在/database/db.sql
MySQL配置示例
DB_TYPE=mysql
DB_HOSTNAME=mysql-server
DB_PORT=3306
DB_NAME=librespeed_db
DB_USERNAME=librespeed_user
DB_PASSWORD=secure_password
PostgreSQL配置示例
DB_TYPE=postgresql
DB_HOSTNAME=postgres-server
DB_NAME=librespeed_db
DB_USERNAME=librespeed_user
DB_PASSWORD=secure_password
持久化存储策略
持久化存储是生产环境部署的关键考虑因素。LibreSpeed通过Docker卷挂载实现数据持久化:
SQLite数据库持久化
默认情况下,SQLite数据库文件存储在容器内的/database/db.sql路径。为了实现数据持久化,需要将主机目录挂载到该路径:
docker run -e MODE=standalone -e TELEMETRY=true \
-v /path/to/your/db:/database \
-p 80:80 ghcr.io/librespeed/speedtest
外部数据库持久化
对于MySQL或PostgreSQL等外部数据库,数据持久化由数据库系统自身管理。配置示例:
version: '3.7'
services:
speedtest:
image: ghcr.io/librespeed/speedtest:latest
environment:
MODE: standalone
TELEMETRY: "true"
DB_TYPE: mysql
DB_HOSTNAME: mysql-db
DB_NAME: librespeed
DB_USERNAME: librespeed
DB_PASSWORD: secure_password
depends_on:
- mysql-db
ports:
- "80:80"
mysql-db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: librespeed
MYSQL_USER: librespeed
MYSQL_PASSWORD: secure_password
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
环境变量配置最佳实践
安全性配置
# 启用所有隐私保护功能
ENABLE_ID_OBFUSCATION=true
REDACT_IP_ADDRESSES=true
PASSWORD=strong_password_here
性能优化配置
# 禁用不必要的功能提升性能
DISABLE_IPINFO=true
# 使用本地数据库减少网络延迟
DB_HOSTNAME=localhost
生产环境完整示例
docker run -d \
--name librespeed \
-e MODE=standalone \
-e TITLE="企业测速平台" \
-e TELEMETRY=true \
-e ENABLE_ID_OBFUSCATION=true \
-e REDACT_IP_ADDRESSES=true \
-e PASSWORD="your_secure_password" \
-e EMAIL="admin@company.com" \
-e DB_TYPE=mysql \
-e DB_HOSTNAME=db-server \
-e DB_NAME=librespeed_prod \
-e DB_USERNAME=librespeed_user \
-e DB_PASSWORD=db_password_123 \
-e WEBPORT=8080 \
-v librespeed_data:/database \
-p 8080:8080 \
ghcr.io/librespeed/speedtest:latest
环境变量验证与调试
在部署前,建议使用以下方法验证环境变量配置:
- 配置验证脚本:
#!/bin/bash
# 验证必需的环境变量
if [ -z "$PASSWORD" ] && [ "$TELEMETRY" == "true" ]; then
echo "错误:启用遥测功能时必须设置PASSWORD环境变量"
exit 1
fi
if [ "$DB_TYPE" == "mysql" ] && [ -z "$DB_HOSTNAME" ]; then
echo "错误:使用MySQL时必须设置DB_HOSTNAME环境变量"
exit 1
fi
- 使用Docker Compose验证:
services:
speedtest:
image: ghcr.io/librespeed/speedtest:latest
environment:
MODE: ${MODE:-standalone}
TELEMETRY: ${TELEMETRY:-false}
PASSWORD: ${PASSWORD:-}
env_file:
- .env
通过合理配置环境变量和实现正确的持久化存储策略,您可以构建出既安全又高性能的LibreSpeed测速服务平台。记得定期备份数据库文件,并在更新容器镜像前确保数据卷的正确挂载。
Docker Compose生产环境部署方案
在生产环境中部署LibreSpeed时,Docker Compose提供了更加灵活和可维护的部署方式。通过YAML配置文件,我们可以轻松管理多个服务、网络配置、数据卷以及环境变量,确保部署的一致性和可重复性。
基础Docker Compose配置
以下是一个基础的Docker Compose配置文件,适用于单机部署场景:
version: '3.8'
services:
librespeed:
image: ghcr.io/librespeed/speedtest:latest
container_name: librespeed-server
restart: unless-stopped
ports:
- "8080:80"
environment:
MODE: standalone
TITLE: "企业网络测速平台"
TELEMETRY: "true"
ENABLE_ID_OBFUSCATION: "true"
REDACT_IP_ADDRESSES: "false"
PASSWORD: "${STATS_PASSWORD}"
EMAIL: "admin@company.com"
DISABLE_IPINFO: "false"
DISTANCE: "km"
WEBPORT: 80
volumes:
- librespeed-data:/database
networks:
- speedtest-net
volumes:
librespeed-data:
driver: local
networks:
speedtest-net:
driver: bridge
环境变量配置文件
为了安全地管理敏感信息,建议使用环境变量文件:
# .env 文件
STATS_PASSWORD=your_secure_password_here
IPINFO_APIKEY=your_ipinfo_api_key_here
DB_HOSTNAME=mysql-db
DB_NAME=librespeed
DB_USERNAME=librespeed_user
DB_PASSWORD=db_password_here
生产级多服务部署
对于需要数据库持久化的生产环境,建议使用MySQL或PostgreSQL数据库:
version: '3.8'
services:
librespeed:
image: ghcr.io/librespeed/speedtest:latest
container_name: librespeed-app
restart: unless-stopped
ports:
- "8080:80"
environment:
MODE: standalone
TELEMETRY: "true"
DB_TYPE: "mysql"
DB_HOSTNAME: "mysql-db"
DB_NAME: "librespeed"
DB_USERNAME: "librespeed_user"
DB_PASSWORD: "${DB_PASSWORD}"
ENABLE_ID_OBFUSCATION: "true"
PASSWORD: "${STATS_PASSWORD}"
EMAIL: "admin@company.com"
TITLE: "生产环境测速服务"
depends_on:
- mysql-db
networks:
- speedtest-net
mysql-db:
image: mysql:8.0
container_name: librespeed-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
MYSQL_DATABASE: "librespeed"
MYSQL_USER: "librespeed_user"
MYSQL_PASSWORD: "${DB_PASSWORD}"
volumes:
- mysql-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- speedtest-net
volumes:
mysql-data:
driver: local
networks:
speedtest-net:
driver: bridge
数据库初始化脚本
创建数据库表结构的初始化脚本:
-- init.sql
CREATE TABLE IF NOT EXISTS speedtest_telemetry (
id INT AUTO_INCREMENT PRIMARY KEY,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ip VARCHAR(45),
isp VARCHAR(255),
extra VARCHAR(255),
ua VARCHAR(512),
lang VARCHAR(10),
dl TEXT,
ul TEXT,
ping TEXT,
jitter TEXT,
log TEXT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
多节点前端-后端架构
对于大规模部署,可以采用前端-后端分离架构:
version: '3.8'
services:
# 前端服务
librespeed-frontend:
image: ghcr.io/librespeed/speedtest:latest
container_name: librespeed-frontend
restart: unless-stopped
ports:
- "8080:80"
environment:
MODE: frontend
TELEMETRY: "true"
DB_TYPE: "mysql"
DB_HOSTNAME: "mysql-db"
DB_NAME: "librespeed"
DB_USERNAME: "librespeed_user"
DB_PASSWORD: "${DB_PASSWORD}"
PASSWORD: "${STATS_PASSWORD}"
TITLE: "分布式测速网络"
volumes:
- ./servers.json:/servers.json
depends_on:
- mysql-db
networks:
- speedtest-net
# 后端节点1
backend-node1:
image: ghcr.io/librespeed/speedtest:latest
container_name: librespeed-backend-1
restart: unless-stopped
environment:
MODE: backend
IPINFO_APIKEY: "${IPINFO_APIKEY}"
networks:
- speedtest-net
# 后端节点2
backend-node2:
image: ghcr.io/librespeed/speedtest:latest
container_name: librespeed-backend-2
restart: unless-stopped
environment:
MODE: backend
IPINFO_APIKEY: "${IPINFO_APIKEY}"
networks:
- speedtest-net
mysql-db:
image: mysql:8.0
# ... MySQL配置同上
服务器配置文件示例
创建servers.json文件定义后端节点:
[
{
"name": "北京节点-电信",
"server": "//backend-node1/",
"dlURL": "garbage.php",
"ulURL": "empty.php",
"pingURL": "empty.php",
"getIpURL": "getIP.php"
},
{
"name": "上海节点-联通",
"server": "//backend-node2/",
"dlURL": "garbage.php",
"ulURL": "empty.php",
"pingURL": "empty.php",
"getIpURL": "getIP.php"
}
]
健康检查与监控配置
为生产环境添加健康检查和资源限制:
services:
librespeed:
# ... 其他配置
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
deploy:
resources:
limits:
memory: 512M
cpus: '1'
reservations:
memory: 256M
cpus: '0.5'
部署流程示意图
环境变量配置表
| 环境变量 | 描述 | 默认值 | 必需 |
|---|---|---|---|
| MODE | 运行模式(standalone/backend/frontend/dual) | standalone | 是 |
| TELEMETRY | 是否启用数据收集 | false | 否 |
| DB_TYPE | 数据库类型(sqlite/mysql/postgresql) | sqlite | 否 |
| DB_HOSTNAME | 数据库主机名 | - | 当DB_TYPE≠sqlite时 |
| DB_NAME | 数据库名称 | - | 当DB_TYPE≠sqlite时 |
| PASSWORD | 统计页面密码 | - | 当TELEMETRY=true时 |
| 管理员邮箱 | - | 当TELEMETRY=true时 | |
| TITLE | 测速页面标题 | LibreSpeed | 否 |
常用管理命令
# 启动服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f librespeed
# 停止服务
docker-compose down
# 环境变量更新后重新部署
docker-compose down && docker-compose up -d
# 备份数据库
docker-compose exec mysql-db mysqldump -u librespeed_user -p librespeed > backup.sql
通过Docker Compose部署LibreSpeed,您可以获得生产级别的可靠性、可扩展性和易维护性。这种部署方式特别适合需要高可用性和数据持久化的企业环境。
总结
通过Docker容器化部署LibreSpeed,可以极大地简化安装和配置过程,提高部署的灵活性和可维护性。本文提供的各种部署方案涵盖了从简单单机测试到复杂生产环境的不同需求,包括独立模式、前后端分离架构以及多节点分布式部署。合理运用环境变量配置、数据持久化策略和Docker Compose编排,可以构建出安全、稳定且高性能的网络测速服务平台,满足企业级应用的各种场景需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



