如何设置docker的哨兵

我在dockerhubfind了官方的哨兵图片 。 但文件不完整,我无法一步一步设置环境。

我们必须先设置数据库容器,但是没有一个先告诉你如何设置它。 具体来说,我不知道哨兵将使用的用户名和密码是什么。

当我运行哨兵容器时,我也遇到以下错误:

sudo docker run --name some-sentry --link some-mysql:mysql -d sentry e888fcf2976a9ce90f80b28bb4c822c07f7e0235e3980e2a33ea7ddeb0ff18ce sudo docker logs some-sentry Traceback (most recent call last): File "/usr/local/bin/sentry", line 9, in <module> load_entry_point('sentry==6.4.4', 'console_scripts', 'sentry')() File "/usr/local/lib/python2.7/site-packages/sentry/utils/runner.py", line 310, in main initializer=initialize_app, File "/usr/local/lib/python2.7/site-packages/logan/runner.py", line 167, in run_app configure_app(config_path=config_path, **kwargs) File "/usr/local/lib/python2.7/site-packages/logan/runner.py", line 89, in configure_app raise ValueError("Configuration file does not exist at %r" % (config_path,)) ValueError: Configuration file does not exist at '/.sentry/sentry.conf.py' 

这是一个移动的目标。 我build议检查https://hub.docker.com/_/sentry/的更新,因为他们的文档是相当不错的&#x3002;

大约版本8您可以轻松地转换这些说明使用docker-compose

泊坞窗,compose.yml

 version: "2" services: redis: image: redis:3.0.7 networks: - sentry-net postgres: image: postgres:9.6.1 environment: - POSTGRES_USER:sentry - POSTGRES_PASSWORD:sentry # volumes: # - ./data:/var/lib/postgresql/data:rw networks: - sentry-net sentry: image: sentry:${SENTRY_TAG} depends_on: - redis - postgres environment: - SENTRY_REDIS_HOST=redis - SENTRY_SECRET_KEY=${SECRET} - SENTRY_POSTGRES_HOST=postgres ports: - 9000:9000 networks: - sentry-net sentry_celery_beat: image: sentry:${SENTRY_TAG} depends_on: - sentry environment: - SENTRY_REDIS_HOST=redis - SENTRY_SECRET_KEY=${SECRET} - SENTRY_POSTGRES_HOST=postgres command: "sentry run cron" networks: - sentry-net sentry_celery_worker: image: sentry:${SENTRY_TAG} depends_on: - sentry environment: - SENTRY_REDIS_HOST=redis - SENTRY_SECRET_KEY=${SECRET} - SENTRY_POSTGRES_HOST=postgres command: "sentry run worker" networks: - sentry-net networks: sentry-net: 

.ENV

 SENTRY_TAG=8.10.0 

运行docker run --rm sentry:8.10.0 config generate-secret-key并添encryption钥

.env更新

 SENTRY_TAG=8.10.0 SECRET=somelongsecretgeneratedbythetool 

第一次开机:

 docker-compose up -d postgres docker-compose up -d redis docker-compose run sentry sentry upgrade 

完全启动

 docker-compose up -d 

debugging

 docker-compose ps docker-compose logs --tail=10 

看一看sentry.conf.py文件,这是官方的哨兵泊坞窗图像的一部分。 它从环境中获得一堆属性,例如SENTRY_DB_NAME,SENTRY_DB_USER。 以下是该文件的摘录。

 os.getenv('SENTRY_DB_PASSWORD') or os.getenv('MYSQL_ENV_MYSQL_PASSWORD') or os.getenv('MYSQL_ENV_MYSQL_ROOT_PASSWORD') 

因此,关于如何validation数据库密码的问题,必须在环境variables中设置。 你可以通过运行:

 sudo docker run --name some-sentry --link some-mysql:mysql \ -e SENTRY_DB_USER=XXX \ -e SENTRY_DB_PASSWORD=XXX \ -d sentry 

至于你的问题,例外,你似乎缺less一个configuration文件Configuration file does not exist at '/.sentry/sentry.conf.py'该文件复制到/home/user/.sentry/sentry.conf.py在容器内。 我不知道为什么你的哨兵安装在/.sentry/sentry.conf.py上找。 可能有一个环境variables或一个设置来控制这个,或者这可能只是一个容器中的错误。

这对我工作https://github.com/slafs/sentry-docker ,我们不必设置数据库或其他人。 稍后我会详细了解configuration。

在这里,我的docker组成yml,从https://hub.docker.com/_/sentry/的官方形象&#xFF1A;

https://gist.github.com/ebuildy/270f4ef3abd41e1490c1

跑:

 docker-compose -p sw up -d docker exec -ti sw_sentry_1 sentry upgrade 

而已!