Docker 搭建一个 Sentry

APT-GET更新

$ apt-get update

安装DOCKER

$ curl -sSL https://get.daocloud.io/docker | sh

安装DOCKER-COMPOSE

$ curl -L https://get.daocloud.io/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
配置 NETWORK 192.168.247.* br1
$ docker network create -d bridge --subnet 192.168.247.0/24 --gateway 192.168.247.1 -o parent=eth0 br1

安装POSTGRES数据库

$ docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry --net=br1 --ip=192.168.247.211 postgres

安装REDIS

$ docker run -d --name sentry-redis --net=br1 --ip=192.168.247.212 redis

生成SENTRY KEY (下面都要用到生成的KEY)

$ docker run --rm sentry config generate-secret-key

安装SENTRY

$ docker run -d --name my-sentry -e SENTRY_SECRET_KEY='生成的KEY' --net=br1 --ip=192.168.247.213  -e SENTRY_SERVER_EMAIL='xxxxx@163.com' -e SENTRY_EMAIL_HOST='smtp.163.com' -e SENTRY_EMAIL_PORT='25' -e SENTRY_EMAIL_USER='xxxxx@163.com' -e SENTRY_EMAIL_PASSWORD='xxxxxouthxxxxx' -e SENTRY_REDIS_HOST=192.168.247.212 -e SENTRY_REDIS_PORT=6379 -e SENTRY_POSTGRES_HOST=192.168.247.211 -e SENTRY_POSTGRES_PORT=5432 -e SENTRY_DB_USER='sentry' -e SENTRY_DB_PASSWORD='secret' --link sentry-postgres:postgres --link sentry-redis:redis sentry

启动SENTRY-WORKER 这个worker 可以启动多个 给不同的 name 和 ip 即可

$ docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='^生成的KEY' --net=br1 --ip=192.168.247.214  -e SENTRY_SERVER_EMAIL='xxxxx@163.com' -e SENTRY_EMAIL_HOST='smtp.163.com' -e SENTRY_EMAIL_PORT='25' -e SENTRY_EMAIL_USER='xxxxx@163.com' -e SENTRY_EMAIL_PASSWORD='xxxxxouthxxxxx' -e SENTRY_REDIS_HOST=192.168.247.212 -e SENTRY_REDIS_PORT=6379 -e SENTRY_POSTGRES_HOST=192.168.247.211 -e SENTRY_POSTGRES_PORT=5432 -e SENTRY_DB_USER='sentry' -e SENTRY_DB_PASSWORD='secret' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker

启动SENTRY CRON 定时脚本

$ docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='生成的KEY' --net=br1 --ip=192.168.247.215  -e SENTRY_SERVER_EMAIL='xxxxx@163.com' -e SENTRY_EMAIL_HOST='smtp.163.com' -e SENTRY_EMAIL_PORT='25' -e SENTRY_EMAIL_USER='xxxxx@163.com' -e SENTRY_EMAIL_PASSWORD='xxxxxouthxxxxx' -e SENTRY_REDIS_HOST=192.168.247.212 -e SENTRY_REDIS_PORT=6379 -e SENTRY_POSTGRES_HOST=192.168.247.211 -e SENTRY_POSTGRES_PORT=5432 -e SENTRY_DB_USER='sentry' -e SENTRY_DB_PASSWORD='secret' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron

更新SENTRY 后期升级可直接升级SENTRY

$ docker run -it --rm -e SENTRY_SECRET_KEY='^生成的KEY' --net=br1 --ip=192.168.247.216  -e SENTRY_SERVER_EMAIL='xxxxx@163.com' -e SENTRY_EMAIL_HOST='smtp.163.com' -e SENTRY_EMAIL_PORT='25' -e SENTRY_EMAIL_USER='xxxxx@163.com' -e SENTRY_EMAIL_PASSWORD='xxxxxouthxxxxx' -e SENTRY_REDIS_HOST=192.168.247.212 -e SENTRY_REDIS_PORT=6379 -e SENTRY_POSTGRES_HOST=192.168.247.211 -e SENTRY_POSTGRES_PORT=5432 -e SENTRY_DB_USER='sentry' -e SENTRY_DB_PASSWORD='secret' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade

安装一个NGINX

$ mkdir -p ~/dockerfile/docker-shared/nginx/config

$ mkdir -p  ~/dockerfile/docker-shared/nginx/logs

$ docker run -d -p 80:80 -p 443:443 --name webserver -v ~/dockerfile/docker-shared/nginx/config:/etc/nginx/conf.d -v ~/dockerfile/docker-shared/nginx/logs:/var/log/nginx --net=br1 --ip=192.168.247.184 nginx

配置NGINX

$ cd ~/dockerfile/docker-shared/nginx/config

$ mkdir certs config ssl

$ vim sentry.xxx.com.conf
------------------------------------------------------------------------
server {
    listen        443 ssl;
    #include /etc/nginx/conf.d/ssl/sentry.xxx.com.ssl;
    server_name  sentry.xxx.com;
    access_log /var/log/nginx/sentry_access.log main;
    error_log /var/log/nginx/sentry_error.log;

    location / {
         proxy_set_header  X-Real-IP  $remote_addr;
         proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header  Host $host;
         #proxy_redirect off;

         proxy_connect_timeout 180;
         proxy_read_timeout 180;
         proxy_send_timeout 180;
         proxy_pass   http://192.168.247.213:9000/;
   }
}

server {
        listen 80;
        server_name sentry.xxx.com;
        rewrite ^/(.*) https://sentry.xxx.com/$1 permanent;
}

连接DOCKER NGINX

$ docker exec -it webserver /bin/bash

$ nginx -t

$ service nginx reload

SENTRY 清理记录数据日志

$ docker exec -it  my-sentry /bin/bash

$ sentry cleanup --days 30

注: sentry cleanup --days 30 对postgresql进行远程cleanup 删除当前日期间30日前的数据
但是数据不会真正的被清理 我们需要 用户 VACUUM 将这些标记为 DEAD 行记录所占用的空间彻底释放
如果不释放 这些数据还会占用你的空间

VACUUM

$ docker exec -it sentry-postgres  /bin/bash

$ vacuumdb -U sentry -d postgres -v -f --analyze
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

这算是个人笔记了吗哈哈,一句多余的话都不多写。

7年前 评论
Summer

@杨进春 这算记录,该丢到 https://tiicle.com/ 里哈

7年前 评论
不忘初心

@杨进春 :speak_no_evil:

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!