Skip to content

Commit bea7a2d

Browse files
RinZ27ZhuLinsen
authored andcommitted
chore: implement non-root execution for Docker (ZhuLinsen#1214)
1 parent c1f54ec commit bea7a2d

3 files changed

Lines changed: 20 additions & 2 deletions

File tree

docker/Dockerfile

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
3434
libxext6 \
3535
&& rm -rf /var/lib/apt/lists/*
3636

37+
# 创建非 root 用户 (UID 1000)
38+
RUN groupadd -g 1000 dsa && \
39+
useradd -u 1000 -g dsa -m dsa
40+
3741
# 复制依赖文件
3842
COPY requirements.txt .
3943

@@ -50,8 +54,9 @@ COPY src/ ./src/
5054
COPY strategies/ ./strategies/
5155
COPY --from=web-builder /app/static ./static/
5256

53-
# 创建数据目录
54-
RUN mkdir -p /app/data /app/logs /app/reports
57+
# 确保数据目录存在并授权给 non-root 用户
58+
RUN mkdir -p /app/data /app/logs /app/reports && \
59+
chown -R dsa:dsa /app
5560

5661
# 设置环境变量默认值
5762
ENV PYTHONUNBUFFERED=1
@@ -61,6 +66,9 @@ ENV DATABASE_PATH=/app/data/stock_analysis.db
6166
ENV WEBUI_HOST=0.0.0.0
6267
ENV API_PORT=8000
6368

69+
# 切换到 non-root 用户
70+
USER dsa
71+
6472
# 暴露 API 端口
6573
EXPOSE 8000
6674

docs/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
1111

1212
<!-- 新条目格式:- [类型] 描述(类型取值:新功能/改进/修复/文档/测试/chore)-->
1313
<!-- 每条独立一行追加到本段末尾,无需分类标题,合并时冲突最小 -->
14+
- [改进] Docker 镜像支持非 root 用户 (`dsa`, UID 1000) 执行,并增强 `Dockerfile` 安全性与构建稳健性。
1415
- [改进] 放宽 LiteLLM 依赖约束,保留 `>=1.80.10` 最低版本并显式排除 PyPI 事故版本 `1.82.7` / `1.82.8`,允许安装后续 1.x 修复版本。
1516
- [改进] 补齐通知渠道 P0 基线、Actions 映射与 `--check-notify` 只读诊断,完善 AstrBot 配置入口和通知回归快照。
1617
- [chore] 清理仓库根目录:移除误入库的 `.codex``review.md` 跟踪记录,将 smoke 测试入口迁移到 `scripts/`、环境检查脚本迁移为 `scripts/check_env.py`,并将 LiteLLM YAML 示例迁移到 `docs/examples/`

docs/DEPLOY.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,15 @@ docker-compose -f ./docker/docker-compose.yml exec stock-analyzer python main.py
8787
- `./logs/` - 日志文件
8888
- `./reports/` - 分析报告
8989

90+
### 6. 权限说明(重要)
91+
92+
由于 Docker 镜像以非 root 用户 (`dsa`, UID 1000) 运行,若你在宿主机挂载卷时遇到 `Permission denied` 错误,请在宿主机执行以下命令:
93+
94+
```bash
95+
# 授权宿主机挂载目录
96+
sudo chown -R 1000:1000 ./data ./logs ./reports
97+
```
98+
9099
---
91100

92101
## 🖥️ 方案二:直接部署

0 commit comments

Comments
 (0)