NewsNow项目Docker Compose部署指南
2025-07-06 04:42:21作者:滕妙奇
项目概述
NewsNow是一个基于容器化技术的新闻聚合服务,通过Docker Compose可以快速部署完整的运行环境。本文将详细介绍如何使用Docker Compose文件来部署NewsNow项目。
环境准备
在开始部署前,请确保您的系统已安装以下组件:
- Docker Engine 19.03.0+
- Docker Compose 1.25.0+
配置文件解析
服务定义
services:
newsnow:
image: ghcr.io/ourongxing/newsnow:latest
container_name: newsnow
ports:
- '4444:4444'
volumes:
- newsnow_data:/usr/app/.data
environment:
- HOST=0.0.0.0
- PORT=4444
- NODE_ENV=production
- G_CLIENT_ID=
- G_CLIENT_SECRET=
- JWT_SECRET=
- INIT_TABLE=true
- ENABLE_CACHE=true
-
镜像配置:使用官方提供的最新镜像,确保获取最新功能和修复
-
端口映射:将容器内部的4444端口映射到主机的4444端口,可根据需要修改左侧主机端口
-
数据卷:使用命名卷
newsnow_data
持久化存储应用数据,确保容器重启后数据不丢失 -
环境变量:
HOST
和PORT
:配置服务监听地址和端口NODE_ENV
:设置为生产环境G_CLIENT_ID
和G_CLIENT_SECRET
:Google API认证所需凭证JWT_SECRET
:JWT令牌签名密钥,建议设置为强密码INIT_TABLE
:是否初始化数据库表结构ENABLE_CACHE
:是否启用缓存功能
数据卷配置
volumes:
newsnow_data:
name: newsnow_data
定义了一个名为newsnow_data
的持久化数据卷,用于存储应用的持久化数据,如数据库文件、缓存等。
部署步骤
-
创建项目目录并进入:
mkdir newsnow && cd newsnow
-
创建
docker-compose.yml
文件,将上述配置内容复制进去 -
修改环境变量:
- 填写有效的
G_CLIENT_ID
和G_CLIENT_SECRET
- 设置强密码作为
JWT_SECRET
- 其他配置根据实际需求调整
- 填写有效的
-
启动服务:
docker-compose up -d
-
验证服务:
docker-compose logs -f
查看日志确认服务正常运行
配置建议
-
安全配置:
- 强烈建议修改默认端口4444为其他端口
JWT_SECRET
应使用强密码生成器生成- 定期轮换API凭证
-
性能调优:
- 可根据服务器资源情况添加资源限制
- 对于高并发场景,考虑添加
replicas
配置
-
数据备份:
- 定期备份
newsnow_data
卷数据 - 可配置自动备份策略
- 定期备份
常见问题
-
端口冲突:如果4444端口已被占用,修改
ports
配置中的主机端口 -
权限问题:确保Docker有权限创建和挂载数据卷
-
初始化失败:首次启动时
INIT_TABLE=true
,后续启动可设为false
-
缓存问题:如果遇到数据不一致,可临时设置
ENABLE_CACHE=false
排查
维护建议
-
定期执行
docker-compose pull
获取最新镜像 -
监控容器资源使用情况
-
设置日志轮转策略,避免日志文件过大
通过以上步骤,您可以成功部署NewsNow服务。根据实际需求,您还可以进一步定制配置,如添加Nginx反向代理、配置HTTPS等。