Docker 使用gosu切换用户
容器启动时切换用户gosu执行脚本
问题
想在小组内部推一下代码检查工具Sonar,申请了容器空间用于部署。在自己本地编译镜像之后推送到公司镜像源之后,发现拉取后启动容器失败了:检查输出日志
1 | java.lang.RuntimeException: don't run elasticsearch as root. |
这就奇怪了,本地构建的镜像,运行都是正常的啊;难道公司容器服务启动的时候会强制以root账户运行?
排查
本地构建镜像的时候修改 ENDPOINT 脚本
run.sh
;输出当前执行用户 whoami ;确实是root
尝试1
1 | # 前置切换用户 |
尝试2
1 | # 修改ENDPOINT |
尝试3【√】
1 | # 修改镜像 添加 gosu / su-exec (sonarqube 官方脚本有这个) |
Go:Web接口实时限流
TensorFlow:鸢尾花品种分析demo
运行效果
1 | root@433ad0b9b2e7:/usr/src/app# python train2.py |
运行环境
- Python:3.7.4
- TensorFlow:1.14.0
- Matplotlib
- 数据来源:
实现步骤
Go:Web服务日志记录
GoWeb 服务日志管理
前情
最新使用 Go 语言开发了一个滑动验证码 SDK 的服务端,提供的接口都具备基础功能了,但是业务逻辑日志以及请求日志没有一个好的记录方式,而且使用的容器服务,每次发布都会刷新容器,文件类的日志都会丢失。因此查了一下常见的Go Log 处理方式。发现 logrus 包使用的人不少,感觉也很好使用毕竟带 hook (带钩子的都是工具人…)
目的
- 记录所有请求日志
- 记录业务逻辑关键信息
- 方便查询检索分析
实现细节
- 自定义日志服务中间件,
- 使用 ES 存储日志数据
- 过滤接口检查的调用日志
- ES使用时间索引
- handler路由使用中间件拦截记录请求日志Mux.Use(m-)
- 逻辑日志纪录使用全局Loges 对象
Go项目-使用ES
自定义日志收集中间件
logrus “github.com/sirupsen/logrus”