mirror of
https://github.com/viq/NewsBlur.git
synced 2025-08-21 05:44:54 +00:00
390 lines
No EOL
8.5 KiB
YAML
390 lines
No EOL
8.5 KiB
YAML
version: '3.9'
|
|
services:
|
|
newsblur_web:
|
|
hostname: nb.com
|
|
image: newsblur/newsblur_python3
|
|
environment:
|
|
- DOCKERBUILD=True
|
|
stdin_open: true
|
|
tty: true
|
|
depends_on:
|
|
- db_mongo
|
|
- postgres
|
|
- elasticsearch
|
|
- redis
|
|
depends_on:
|
|
- db_mongo
|
|
- postgres
|
|
- redis
|
|
- elasticsearch
|
|
ports:
|
|
- '8000:8000'
|
|
command: bash -c 'if [[ -z "${TEST}" && "${TEST}" = "True" ]] ; then echo "starting test env"; else gunicorn --bind :8000 newsblur_web.wsgi:application; fi'
|
|
deploy:
|
|
placement:
|
|
max_replicas_per_node: 4
|
|
constraints:
|
|
- node.labels.service==app
|
|
replicas: 4
|
|
networks:
|
|
- nb_overlay
|
|
|
|
nginx:
|
|
image: nginx:1.19.6
|
|
ports:
|
|
- 81:81
|
|
depends_on:
|
|
- newsblur_web
|
|
- favicons
|
|
- postgres
|
|
- redis
|
|
- db_mongo
|
|
- elasticsearch
|
|
- original_pages
|
|
- original_text
|
|
- node_websocket
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==app
|
|
|
|
networks:
|
|
- nb_overlay
|
|
#volumes:
|
|
# - ./docker/nginx/:/etc/nginx/conf.d
|
|
|
|
postgres:
|
|
image: postgres:13.1
|
|
environment:
|
|
- POSTGRES_USER=newsblur
|
|
- POSTGRES_PASSWORD=newsblur
|
|
ports:
|
|
- '5432:5432'
|
|
#volumes:
|
|
# - postgres-data:/var/lib/postgresql/data
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==postgres
|
|
replicas: 1
|
|
networks:
|
|
- nb_overlay
|
|
|
|
redis:
|
|
image: redis:3.2.6
|
|
ports:
|
|
- '6379:6379'
|
|
#volumes:
|
|
# - redis-data:/data
|
|
# - redis-data:/redis.var.lib:/var/lib/redis
|
|
command: redis-server --port 6379
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==db-redis
|
|
networks:
|
|
- nb_overlay
|
|
|
|
redis-story:
|
|
image: redis:3.2.6
|
|
ports:
|
|
- '6378:6378'
|
|
#volumes:
|
|
# - redis-data:/data
|
|
# - redis-data:/redis.var.lib:/var/lib/redis
|
|
command: redis-server --port 6378
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.01'
|
|
memory: 200M
|
|
placement:
|
|
constraints:
|
|
- node.hostname==db-redis-story
|
|
networks:
|
|
- nb_overlay
|
|
# - node.hostname==db-redis-sessions
|
|
# - node.hostname==db-redis-pubsub
|
|
redis-sessions:
|
|
image: redis:3.2.6
|
|
ports:
|
|
- '6377:6377'
|
|
#volumes:
|
|
# - redis-data:/data
|
|
# - redis-data:/redis.var.lib:/var/lib/redis
|
|
command: redis-server --port 6377
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==db-redis-sessions
|
|
networks:
|
|
- nb_overlay
|
|
redis-pubsub:
|
|
image: redis:3.2.6
|
|
ports:
|
|
- '6376:6376'
|
|
#volumes:
|
|
# - redis-data:/data
|
|
# - redis-data:/redis.var.lib:/var/lib/redis
|
|
command: redis-server --port 6376
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==db-redis-pubsub
|
|
networks:
|
|
- nb_overlay
|
|
|
|
elasticsearch:
|
|
image: elasticsearch:1.7
|
|
ports:
|
|
- '9200:9200'
|
|
volumes:
|
|
- elasticsearch-data:/usr/share/elasticsearch/data
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==elasticsearch
|
|
networks:
|
|
- nb_overlay
|
|
|
|
db_mongo:
|
|
image: mongo:3.2
|
|
ports:
|
|
- 27017:27017
|
|
command: mongod --smallfiles
|
|
volumes:
|
|
- db-mongo-data:/data/db
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==db-mongo
|
|
networks:
|
|
- nb_overlay
|
|
|
|
original_pages:
|
|
image: newsblur/node_prod
|
|
environment:
|
|
- NODE_ENV=docker
|
|
command: node original_page.js
|
|
ports:
|
|
- 3060:3060
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==node
|
|
networks:
|
|
- nb_overlay
|
|
|
|
original_text:
|
|
image: newsblur/node_prod
|
|
environment:
|
|
- NODE_ENV=docker
|
|
ports:
|
|
- 4040:4040
|
|
command: node original_text.js
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==node
|
|
networks:
|
|
- nb_overlay
|
|
|
|
favicons:
|
|
image: newsblur/node_prod
|
|
environment:
|
|
- NODE_ENV=docker
|
|
- MONGO_PORT=29019
|
|
ports:
|
|
- 3030:3030
|
|
command: node favicons.js
|
|
depends_on:
|
|
- postgres
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==node
|
|
networks:
|
|
- nb_overlay
|
|
|
|
node_websocket:
|
|
image: newsblur/node_prod
|
|
environment:
|
|
- NODE_ENV=docker
|
|
command: node unread_counts.js
|
|
stop_signal: HUP
|
|
ports:
|
|
- 8888:8888
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==node
|
|
networks:
|
|
- nb_overlay
|
|
|
|
task_celerybeat_scheduler:
|
|
image: newsblur/newsblur_python3
|
|
command: bash -c "mkdir -p data && celery beat -A newsblur_web --schedule=/srv/newsblur/data/celerybeat-schedule.db --loglevel=INFO --pidfile=/srv/celeryd.pid"
|
|
environment:
|
|
- DOCKERBUILD=True
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.01'
|
|
memory: 100M
|
|
placement:
|
|
constraints:
|
|
- node.labels.service==celery
|
|
networks:
|
|
- nb_overlay
|
|
task:
|
|
image: newsblur/newsblur_python3
|
|
command: "celery worker -A newsblur_web --loglevel=INFO -Q new_feeds,push_feeds,update_feeds"
|
|
environment:
|
|
- DOCKERBUILD=True
|
|
user: "${CURRENT_UID}:${CURRENT_GID}"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.01'
|
|
memory: 100M
|
|
replicas: 3
|
|
placement:
|
|
constraints:
|
|
- node.labels.service==celery
|
|
networks:
|
|
- nb_overlay
|
|
|
|
task_cron_queue:
|
|
image: newsblur/newsblur_python3
|
|
command: "celery worker -A newsblur_web --loglevel=INFO -Q cron_queue -c 3"
|
|
environment:
|
|
- DOCKERBUILD=True
|
|
user: "${CURRENT_UID}:${CURRENT_GID}"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.01'
|
|
memory: 100M
|
|
placement:
|
|
constraints:
|
|
- node.labels.service==celery
|
|
networks:
|
|
- nb_overlay
|
|
|
|
task_beat_feeds:
|
|
image: newsblur/newsblur_python3
|
|
command: "celery worker -A newsblur_web --loglevel=INFO -Q beat_feeds_task -c 1"
|
|
environment:
|
|
- DOCKERBUILD=True
|
|
user: "${CURRENT_UID}:${CURRENT_GID}"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.01'
|
|
memory: 100M
|
|
placement:
|
|
constraints:
|
|
- node.labels.service==celery
|
|
networks:
|
|
- nb_overlay
|
|
|
|
task_search_indexer:
|
|
image: newsblur/newsblur_python3
|
|
command: "celery worker -A newsblur_web --loglevel=INFO -Q search_indexer -c 4"
|
|
environment:
|
|
- DOCKERBUILD=True
|
|
|
|
user: $CURRENT_UID:$CURRENT_GID
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.01'
|
|
memory: 100M
|
|
placement:
|
|
constraints:
|
|
- node.labels.service==celery
|
|
networks:
|
|
- nb_overlay
|
|
|
|
task_search_indexer_tasker:
|
|
image: newsblur/newsblur_python3
|
|
command: "celery worker -A newsblur_web --loglevel=INFO -Q search_indexer_tasker -c 2"
|
|
environment:
|
|
- DOCKERBUILD=True
|
|
user: $CURRENT_UID:$CURRENT_GID
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.01'
|
|
memory: 100M
|
|
placement:
|
|
constraints:
|
|
- node.labels.service==celery
|
|
networks:
|
|
- nb_overlay
|
|
|
|
task_work_queue:
|
|
image: newsblur/newsblur_python3
|
|
command: bash -c "celery worker -A newsblur_web --loglevel=INFO -Q work_queue"
|
|
ports:
|
|
- 82:82
|
|
environment:
|
|
- DOCKERBUILD=True
|
|
user: $CURRENT_UID:$CURRENT_GID
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.01'
|
|
memory: 100M
|
|
replicas: 2
|
|
placement:
|
|
constraints:
|
|
- node.labels.service==celery
|
|
networks:
|
|
- nb_overlay
|
|
|
|
monitor:
|
|
image: newsblur/newsblur_python3
|
|
command: bash -c "python /srv/newsblur/flask_monitor/db_monitor.py"
|
|
environment:
|
|
- DOCKERBUILD=True
|
|
ports:
|
|
- 5579:5579
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.hostname==monitor
|
|
networks:
|
|
- nb_overlay
|
|
haproxy:
|
|
image: newsblur/haproxy
|
|
dns: 127.0.0.11
|
|
depends_on:
|
|
- nginx
|
|
- newsblur_web
|
|
- redis
|
|
ports:
|
|
- 80:80
|
|
- 443:443
|
|
- 1936:1936
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
cpus: '0.5'
|
|
memory: 900M
|
|
placement:
|
|
constraints:
|
|
- node.hostname==haproxy
|
|
networks:
|
|
- nb_overlay
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
networks:
|
|
nb_overlay:
|
|
driver: "overlay"
|
|
|
|
volumes:
|
|
app-files:
|
|
nginx:
|
|
elasticsearch-data:
|
|
db-mongo-data: |