NewsBlur/docker-compose.yml
2021-05-04 08:21:15 -05:00

190 lines
No EOL
4.5 KiB
YAML

version: '3'
services:
newsblur_web:
hostname: nb.com
container_name: newsblur_web
image: newsblur/newsblur_python3:latest
environment:
- DOCKERBUILD=True
stdin_open: true
tty: true
restart: unless-stopped
depends_on:
- db_mongo
- db_postgres
- db_redis
- db_elasticsearch
ulimits:
nproc: 10000
nofile:
soft: 10000
hard: 10000
expose:
- 8000
# only use gunicorn if the TEST env variable is not "True"
entrypoint: /bin/sh -c newsblur_web/entrypoint.sh
volumes:
- ${PWD}:/srv/newsblur
newsblur_node:
image: newsblur/newsblur_node:latest
container_name: node
environment:
- NODE_ENV=docker
- MONGODB_PORT=29019
command: node newsblur.js
restart: unless-stopped
stop_signal: HUP
depends_on:
- db_mongo
- db_postgres
- db_redis
ports:
- 8008:8008
volumes:
- ${PWD}/node:/srv
imageproxy:
image: willnorris/imageproxy:latest
container_name: imageproxy
entrypoint: /app/imageproxy -addr 0.0.0.0:8088 -cache /tmp/imageproxy -verbose
restart: unless-stopped
ports:
- 8088:8088
volumes:
- /tmp:/tmp/imageproxy
nginx:
container_name: nginx
image: nginx:1.19.6
ports:
- 81:81
depends_on:
- newsblur_web
- newsblur_node
- db_postgres
- db_redis
- db_mongo
- db_elasticsearch
environment:
- DOCKERBUILD=True
volumes:
- ./docker/nginx/nginx.local.conf:/etc/nginx/conf.d/nginx.conf
- ${PWD}:/srv/newsblur
db_postgres:
container_name: db_postgres
image: postgres:13.1
environment:
- POSTGRES_USER=newsblur
- POSTGRES_PASSWORD=newsblur
healthcheck:
test: ["CMD-SHELL", "pg_isready -U newsblur"]
interval: 10s
timeout: 5s
retries: 5
ports:
- 5434:5432
volumes:
- ./docker/volumes/postgres:/var/lib/postgresql/data
db_redis:
image: redis:3.2.6
ports:
- 6579:6579
container_name: db_redis
volumes:
- ./config/redis.conf:/etc/redis/redis.conf
- ./config/redis_docker.conf:/etc/redis/redis_server.conf
- ./docker/volumes/redis:/var/lib/redis
command: redis-server /etc/redis/redis.conf --port 6579
db_elasticsearch:
container_name: db_elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.11.1
mem_limit: 512mb
environment:
- discovery.type=single-node
ports:
- 9200:9200
- 9300:9300
volumes:
- ./docker/volumes/elasticsearch:/elasticsearch/dat
- ./config/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
db_mongo:
container_name: db_mongo
image: mongo:3.6
ports:
- 29019:29019
command: mongod --smallfiles --port 29019
volumes:
- ./docker/volumes/db_mongo:/data/db
task_celery:
container_name: task_celery
image: newsblur/newsblur_python3
command: "celery worker -A newsblur_web -B --loglevel=INFO"
volumes:
- ${PWD}:/srv/newsblur
environment:
- DOCKERBUILD=True
user: "${CURRENT_UID}:${CURRENT_GID}"
haproxy:
container_name: haproxy
image: haproxy:latest
depends_on:
- nginx
- newsblur_web
- newsblur_node
- imageproxy
- db_redis
- db_postgres
- db_elasticsearch
- db_mongo
ports:
- 80:80
- 443:443
- 1936:1936
volumes:
- ./docker/haproxy/haproxy.docker-compose.cfg:/usr/local/etc/haproxy/haproxy.cfg
- ${PWD}:/srv/newsblur
prometheus:
container_name: prometheus
image: prom/prometheus:0.18.0
ports:
- 9090:9090
command: '-config.file=/etc/prometheus/prometheus.yml'
volumes:
- ./docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./docker/volumes/prometheus_data:/prometheus
depends_on:
- node-exporter
- haproxy
external_links:
- haproxy
node-exporter:
container_name: node-exporter
image: prom/node-exporter
ports:
- 9100:9100
grafana:
container_name: grafana
image: grafana/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=pass
depends_on:
- prometheus
ports:
- 3000:3000
volumes:
- ./docker/volumes/grafana_data:/var/lib/grafana
- ./docker/grafana/datasources:/etc/grafana/provisioning/datasources/
- ./docker/grafana/dashboards/:/etc/grafana/provisioning/dashboards/
external_links:
- prometheus