Timesketch开发环境Docker部署指南
概述
Timesketch是一款开源的数字取证和事件响应协作平台,本文将详细介绍如何使用Docker搭建Timesketch的开发环境。通过Docker容器化部署,开发者可以快速搭建开发环境,无需担心复杂的依赖关系和配置问题。
环境准备
在开始之前,请确保您的系统满足以下要求:
- 已安装Docker和Docker Compose
- 系统内存至少8GB(低于此配置可能导致性能问题)
- 已完成Docker的[post-install]配置,允许非root用户执行Docker命令
启动开发容器
1. 启动容器服务
在项目目录下执行以下命令启动Timesketch开发容器:
docker compose up -d
此命令会以守护进程模式启动所有必要的容器服务。容器配置将项目代码作为卷挂载,这意味着您在本地对代码的任何修改都会实时反映在容器中。
当看到"Timesketch development server is ready!"提示时,表示服务已准备就绪。
2. 获取容器ID
为了方便后续操作,我们需要获取Timesketch容器的ID:
export CONTAINER_ID="$(docker container list -f name=timesketch-dev -q)"
可以通过以下命令验证是否成功获取:
echo $CONTAINER_ID
启动服务组件
1. 启动Celery任务队列
Timesketch使用Celery处理异步任务,执行以下命令启动Celery worker:
docker exec -it $CONTAINER_ID celery -A timesketch.lib.tasks worker --loglevel info
2. 启动开发Web服务器
启动Gunicorn Web服务器:
docker exec -it $CONTAINER_ID gunicorn --reload -b 0.0.0.0:5000 --log-file - --timeout 600 -c /usr/local/src/timesketch/data/gunicorn_config.py timesketch.wsgi:application
启动成功后,可以通过以下方式访问:
- Timesketch开发版:http://127.0.0.1:5000/
- 用户名:dev
- 密码:dev
- 监控仪表盘:http://127.0.0.1:3000/
3. 非交互式启动(脚本方式)
如果您希望以脚本方式自动启动所有服务,可以使用以下命令:
export CONTAINER_ID="$(docker container list -f name=timesketch-dev -q)"
docker exec $CONTAINER_ID celery -A timesketch.lib.tasks worker --loglevel info
docker exec $CONTAINER_ID gunicorn --reload -b 0.0.0.0:5000 --log-file - --timeout 120 timesketch.wsgi:application
测试与开发
1. 运行测试
在提交代码前,建议运行完整的测试套件:
docker exec -w /usr/local/src/timesketch -it $CONTAINER_ID python3 run_tests.py --coverage
此命令会执行所有测试并生成覆盖率报告。
2. Jupyter Notebook集成
Timesketch开发环境还集成了Jupyter Notebook,方便进行数据分析和API测试:
- 访问地址:http://localhost:8844/
- 登录密码:"timesketch"
笔记本存储配置
默认情况下,笔记本存储在容器的/tmp目录下。如需修改存储位置,可以编辑docker-compose.yml文件中的以下配置:
- /tmp/:/usr/local/src/picadata/
修改为您的目标目录,并确保该目录对UID 1000的用户有读写权限。
API客户端更新
如果您修改了Timesketch的API客户端代码,可以在Notebook中执行以下命令更新:
!pip install -e /usr/local/src/timesketch/api_client/python/
!pip install -e /usr/local/src/timesketch/importer_client/python
更新后需要重启内核才能使更改生效。
3. 更新Docker镜像
如需更新Notebook镜像,可执行:
docker image pull us-docker.pkg.dev/osdfir-registry/timesketch/notebook:latest
总结
通过Docker部署Timesketch开发环境,开发者可以快速搭建完整的开发栈,包括Web服务、任务队列和数据分析环境。这种部署方式隔离了开发环境与主机系统,简化了依赖管理,使开发者能够专注于代码开发而非环境配置。
建议开发者在提交代码前运行完整的测试套件,并使用Jupyter Notebook进行API功能的验证测试,这将有助于提高代码质量和开发效率。