Docker部署Errbit无日志输出求助:邮件异常且日志缺失
Errbit Docker容器日志生成及邮件问题排查方案
1. 直接生成Rails风格文件日志
如果你想让Errbit像常规Rails项目那样生成文件日志,不用纠结默认的ERRBIT_LOG_LOCATION,直接强制覆盖日志配置:
- 修改
docker-compose.yml里的Errbit服务,添加以下环境变量和卷挂载:
重启容器后,日志会直接生成在本地的services: errbit: # 其他原有配置... environment: - RAILS_LOG_TO_STDOUT=false - RAILS_LOG_PATH=/app/log/production.log volumes: - ./errbit-logs:/app/log # 本地目录绑定容器日志目录,持久化日志文件./errbit-logs/production.log里,和普通Rails项目的日志结构一致。
2. 修复Syslog无日志的问题
如果一定要用Syslog记录日志,得先确保容器内的Syslog服务正常运行:
- 进入容器安装并启动rsyslog:
docker exec -it <你的errbit容器名> bash apt-get update && apt-get install -y rsyslog service rsyslog start - 或者在
docker-compose.yml里配置容器启动时自动启动rsyslog:command: sh -c "service rsyslog start && bundle exec rails server -p 8080" - 额外添加Syslog相关环境变量指定配置:
重启后就能在容器内的environment: - SYSLOG_SERVER=localhost - SYSLOG_FACILITY=user/var/log/syslog看到日志,也可以把这个目录挂载到本地方便查看。
3. 查看默认STDOUT日志的正确方式
默认的STDOUT日志并没有被丢弃,Docker会收集容器的标准输出,直接用以下命令查看:
# 查看全部日志 docker logs <你的errbit容器名> # 实时跟踪日志输出 docker logs -f <你的errbit容器名>
这里面会包含邮件发送相关的错误信息,足够用来排查问题。
4. 直接测试邮件配置(无需依赖日志)
如果急着排查邮件接收问题,直接进入Rails控制台手动发送测试邮件:
docker exec -it <你的errbit容器名> rails c production # 在控制台内执行测试命令 UserMailer.test_email('你的测试邮箱地址', '测试主题', '测试内容').deliver_now
执行后会直接返回错误信息,比如SMTP配置错误、网络连接失败等,比看日志更直接高效。
内容的提问来源于stack exchange,提问作者MDickten
相关产品推荐
相关产品推荐

