If a user encounters an error but you don’t know about, did it happen at all?

Sentry is one of the several options for error tracking across many platforms and languages. Sentry has a great free option for 10,000 errors per month and a single user, but they also offer a self-hosted option that is 100% free. This post aims to help you configure your own installation of Sentry using docker-compose.

Assumptions

I will start by assuming that you have Docker and docker-compose installed and working. It would also be great if you had some experience with both of these.

Instructions

For your convenience I am providing a zip with the 3 files I describe below. It cannot just be executed ‘as-is’ you must make the configuration changes described in this post. sentry_docker_3_2018.zip

Save the following file as docker-compose.yml. It tells docker what containers to create and what environment variables to use when running them. Fill in the missing portions. The containers are configured to save their data to /srv/sentry so you may need to create this path or choose a different path.

version: '3'

services:
# OPTIONAL: If you want to get emails from sentry include this docker container
smtp:
image: 'tianon/exim4:latest'
environment:
GMAIL_USER: 'GMAIL_USER@gmail.com'
GMAIL_PASSWORD: 'GMAIL_PASSWORD_OR_GMAIL_APP_PASSWORD' sentry-base:
image: 'sentry:latest'
container_name: sentry-base
restart: unless-stopped
depends_on:
- sentry-redis
- sentry-postgres
links:
- sentry-redis
- sentry-postgres
ports:
- 880:9000
env_file:
- sentry.env
volumes:
- /srv/sentry/sentry:/var/lib/sentry/files sentry-cron:
image: 'sentry:latest'
restart: unless-stopped
depends_on:
- sentry-base
links:
- sentry-redis
- sentry-postgres
command: "sentry run cron"
env_file:
- sentry.env
volumes:
- /srv/sentry/sentry:/var/lib/sentry/files sentry-worker:
image: 'sentry:latest'
depends_on:
- sentry-base
links:
- sentry-redis
- sentry-postgres
command: "sentry run worker"
env_file:
- sentry.env
volumes:
- /srv/sentry/sentry:/var/lib/sentry/files sentry-redis:
image: 'redis:latest'
sentry-postgres:
image: 'postgres:latest'
environment:
POSTGRES_USER: sentry
POSTGRES_PASSWORD: sentry
POSTGRES_DB: sentry
volumes:
- /srv/sentry/postgres:/var/lib/postgresql/data

Next, save the environment variables file as sentry.env and edit it as appropriate.

# OPTIONAL: Include if you're using email
SENTRY_EMAIL_HOST=smtp SENTRY_POSTGRES_HOST=sentry-postgres
SENTRY_DB_USER=sentry
SENTRY_DB_PASSWORD=sentry
SENTRY_REDIS_HOST=sentry-redis # OPTIONAL: If you want GitHub integration
GITHUB_APP_ID=#FILL ME IN
GITHUB_API_SECRET=#FILL ME IN
GITHUB_EXTENDED_PERMISSIONS=["repo"] # OPTIONAL: Include if Sentry is available over HTTPS
SOCIAL_AUTH_REDIRECT_IS_HTTPS=true
SENTRY_SECRET_KEY=

If you want to use GitHub integration follow the steps below, otherwise skip ahead.

GitHub Integration

Make a new GitHub OAuth application at this link and enter in an application name. The “Homepage URL” and “Authorization callback URL” should both be set to the web root of your new Sentry install, such as “https://sentry.io/”.

Copy the “Client ID” and “Client Secret” from GitHub and paste them into the sentry.env file described above as “GITHUB_APP_ID” and “GITHUB_API_SECRET” respectively.

If your Sentry will be accessible over HTTPS, include the optional environment variable “SOCIAL_AUTH_REDIRECT_IS_HTTPS”.

Bringing up the service for the first time

Automatic Script

Utilize the script below or manually type the commands to generate a new secret key, build the database, and start the service.

#!/bin/bash

# Generate a random secret key and put it into the environment variable file
sed -i "$ s/$/$(docker-compose run --rm sentry-base sentry config generate-secret-key)/" sentry.env # Run database migrations (build the database)
docker-compose run --rm sentry-base sentry upgrade --noinput # Startup the whole service
docker-compose up -d

Save this file as sentry-install.sh and then make it executable by running chmod +x sentry-install.sh. Next, run the file by doing ./sentry-install.sh. This file will write a new secret key to the sentry.env file, so it is important that it is named in that way and that there are no additional lines after the “SENTRY_SECRET_KEY=”.

Manually

To do this all manually, run

– docker-compose exec sentry-base sentry config generate-secret-key put the output into the sentry.env file as “SENTRY_SECRET_KEY”.

– Next, run docker-compose exec sentry-base sentry upgrade which will initialize the postgres database. This command will need to be run every time the Sentry docker image is updated.

– Finally, use docker-compose up -d to bring up the service.

If you ran the commands above manually, then you’re done. If you used the script however, the service is up but there is no administrator.

Create the Administrator Account

Use the following command to create the administrator.

docker-compose exec sentry-base sentry createuser --email YOUR_EMAIL --password YOUR_NEW_PASSWORD --superuser --no-input

from https://mikedombrowski.com/2018/03/self-hosting-sentry-with-docker-and-docker-compose/

Self-hosting Sentry With Docker and Docker-compose的更多相关文章

  1. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行

    本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...

  2. Docker,Docker Compose,Docker Swarm,Kubernetes之间的区别

    Dcoker Docker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我 ...

  3. 物联网架构成长之路(24)-Docker练习之Compose容器编排

    0.前言 一开始学的之后,是想一步到位直接上Kubernetes(K8s)的,后面没想到,好像有点复杂,有些概念不是很懂.因此学习东西还是要循序渐进,慢慢来.先了解单机编排技术Docker Compo ...

  4. docker和docker compose常用操作命令

    首先区分一下docker中几个概念 Image:镜像,相当于一个root文件系统,不包含任何动态数据 Container:容器,镜像运行时的实体,实质是进程,容器进程运行于属于自己的独立的命名空间 d ...

  5. Docker 0x13: Docker 构建集群/服务/Compose/分布式服务栈

    目录 Docker 构建集群/服务/Compose/分布式服务栈 集群 初始化集群服务 安装docker-machine 管理节点和工作节点 docker集群构建完成 集群中部署应用 集群服务访问特性 ...

  6. docker swarm和compose 的使用(阿里)

    基本的docker使用参考:Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点) 昨天去阿里面试 问我如果给你5台服务器 如何部署docker,我说一个个拷贝,面试官听了 ...

  7. Dockerfile & Docker Swarm & Docker Stack & Docker Compose

    Dockerfile 通俗地讲,它是为了指导单个镜像从无到有的构建过程.如果你镜像是从Docker registry上面拉下来的,那就用不到这个文件:如果你是自己的应用,想打包成镜像,那就需要这个文件 ...

  8. linux安装docker和docker compose

    运行 sudo -s 切换到root用户. 1.卸载旧版本Docker(如果系统之前没安装过Docker,可以跳过): yum remove docker \ docker-client \ dock ...

  9. docker和docker compose安装使用、入门进阶案例

    一.前言 现在可谓是容器化的时代,云原生的袭来,导致go的崛起,作为一名java开发,现在慌得一批.作为知识储备,小编也是一直学关于docker的东西,还有一些持续继承jenkins. 提到docke ...

  10. [Docker基础]Docker安装教程

    Install Docker Docker支持几乎所有的Linux发行版,也支持Mac和Windows. 各操作系统的安装方法可参考Docker官网. 安装环境 ubuntu 16.04 Docker ...

随机推荐

  1. 构造函数和初始化表、this指针与常函数、析构函数、拷贝构造与拷贝赋值(day05)

    十四 构造函数和初始化表 ... 初始化表 )语法形式 class 类名{ 类名(形参表):成员变量1(初值),...{} }; )必须要使用初始化表的场景 -->如果有类 类型的成员变量,而该 ...

  2. [luogu2414 NOI2011]阿狸的打字机 (AC自动机)

    传送门 Solution 我们知道AC自动机上如果有一点A的fail[A]->B那么B为A的一个后缀 那么我们的问题\((x,y)\)就变为在y中有多少个点直接或间接连向x的终止节点 如果写暴力 ...

  3. linux邮件服务

    linux本地常见邮件服务有: Centos5:默认使用sendmail邮件服务,开启方式/etc/init.d/sedmail start Centos6:默认使用postfix邮件服务,开启方式/ ...

  4. NumPy常见的元素操作函数

    ceil(): 向上最接近的整数,参数是 number 或 array floor(): 向下最接近的整数,参数是 number 或 array rint(): 四舍五入,参数是 number 或 a ...

  5. Bootstrap 表单控件状态(禁用状态)

    Bootstrap框架的表单控件的禁用状态和普通的表单禁用状态实现方法是一样的,在相应的表单控件上添加属性“disabled”.和其他表单的禁用状态不同的是,Bootstrap框架做了一些样式风格的处 ...

  6. 【[Offer收割]编程练习赛11 B】物品价值

    [题目链接]:http://hihocoder.com/problemset/problem/1486 [题意] [题解] 设f[i][j]表示前i个物品,每种属性的状态奇偶状态为j的最大价值; 这里 ...

  7. Mahmoud and a Dictionary

    Mahmoud and a Dictionary time limit per test 4 seconds memory limit per test 256 megabytes input sta ...

  8. 防火墙对FTP的影响

    http://www.5iadmin.com/post/919.html FTP 常用命令 http://www.cnblogs.com/emanlee/archive/2012/07/09/2583 ...

  9. CSTC 选课

    选课 [问题描述] 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分, ...

  10. cocos2d函数

    CCNodeLoader::parseProperties CCBReader::readNodeGraph kCCBPropTypeBlockCCControl CCInvocation parse ...