Sentry 是一个错误记录和聚合的平台。本指南将指导您在Docker中部署设置自己的内部Sentry。
Docker
依赖
- Docker version 1.10+
相关资料
构建容器镜像
初始化
clone官方Docker-Sentry镜像,这个是自定义Sentry镜像的基础文件。里面有sentry.conf.py和config.yml可以自定义修改
安装相关依赖
# 初次执行中间需要添加账户
./install.sh
Tip1: master分支执行下
./install.sh会失败,原因是某些镜像已经不存在了,所以在失败后可以切到stage分支执行./install.sh(确保切到stage时没有多余文件,有的话记得清除)
Tip2: 报RAM不够时,全局查找需要的大小修改成自己现有的大小
Tip3: SENTRY_SECRET_KEY is undefined, 查看
生成secret-key,将其添加到配置文件.env中(生成的secret key在最后一行)
# 可在任意时间执行
docker login
docker-compose run web config generate-secret-key # 得到一串包含*%()@+等的字符串
# .env
SENTRY_SECRET_KEY='' # 一串包含*%()@+等的字符串
SENTRY_IMAGE=sentry:9.1.2
SENTRY_IMAGE=getsentry/sentry:git
运行Sentry服务
以下命令均需在项目目录下执行
启动服务
docker-compose up
# 后台启动
docker-compose up -d
# 构建并后台启动
docker-compose up --build -d
更新镜像并构建服务
docker-compose build --pull
启动 web容器并迁移数据库,之后删除容器
docker-compose run --rm web upgrade
停止服务
# 前台服务直接cmd + c
# 后台服务
docker-compose stop
重启服务
docker-compose restart
关闭所有容器并删除,默认保留 数据卷
docker-compose down
输出当前运行状态
docker-compose ps
打包并发布
- 如果有一个私有容器镜像服务:
# 可在Makefile修改REPOSITORY
# 命令行中的优先级最高
REPOSITORY=reg.example.com/sentry make build push
# make build push === make all
- 如果没有:
# 1. 本地构建
make build
# make执行失败报如下错误时可执行下面两条命令
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
1 xcode-select --install # 不行的话执行 2
2 sudo xcode-select -switch /
# 2. 注册完服务后,推送到远程
docker login
make push
后续可直接执行
make all打包并发布
扩展
一、Docker 命令
镜像列表
docker images
下载镜像
docker pull docker_name
删除镜像
docker rmi docker_name
创建镜像
docker run -it -rm docker_name
容器列表
docker ps
进入容器
# 查看 CONTAINER ID/NAMES
docker ps
# 进入容器
docker exec -it [CONTAINER ID/NAMES] /bin/bash
# 报错:OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown
# 原因:该镜像是使用alpine制作的,要进入该容器需要输入
docker exec -it [CONTAINER ID/NAMES] /bin/sh
退出容器
exit
删除所有容器
方法一:
#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器
sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'`
方法二:
#删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)
sudo docker rm $(sudo docker ps -a -q)
方法三:
#根据容器的状态,删除Exited状态的容器
sudo docker rm $(sudo docker ps -qf status=exited)
方法四:
#Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器。
sudo docker container prune
删除所有xx
# 删除所有容器
docker container prune
# 删除所有镜像
docker image prune
docker rmi $(docker images -q)
# 删除所有网络
docker network prune
# 删除所有数据卷
docker volume prune
二、Docker-compose
配置
邮件配置
目前测试qq邮箱能成功
docker-compose.yml
# 设置相关环境变量
environment:
SENTRY_MEMCACHED_HOST: memcached
SENTRY_REDIS_HOST: redis
SENTRY_POSTGRES_HOST: postgres
SENTRY_EMAIL_HOST: 'smtp.email.qq.com'
SENTRY_EMAIL_USER: '798052735@qq.com'
SENTRY_EMAIL_PASSWORD: xxx # 填写自己的邮箱授权码https://mail.qq.com/cgi-bin/frame_html => 设置-账户-开启STMP服务
SENTRY_SERVER_EMAIL: '798052735@qq.com'
SENTRY_EMAIL_PORT: 587
SENTRY_EMAIL_USE_TLS: 'true'
SENTRY_URL_PREFIX: http://sentry.com
重新来过
删除所有相关内容
- 执行相关命令-跳转
- 从头来过