AppsRSSNewsblur

Newsblur

NewsBlur is a personal news reader that brings people together to talk about the world. A new sound of an old instrument.

Directory Structure

    • .env
    • docker-compose.yml

docker-compose.yml

version: '2'
services:
 
  newsblur_web:
    hostname: nb.com
    container_name: newsblur_web
    image: newsblur/newsblur_${NEWSBLUR_BASE:-python3}:latest
    # build: 
    #   context: /srv/newsblur
    #   dockerfile: docker/newsblur_base_image.Dockerfile
    user: "${CURRENT_UID}:${CURRENT_GID}"
    environment: 
      - DOCKERBUILD=True
      - RUNWITHMAKEBUILD=${RUNWITHMAKEBUILD?Use the `make` command instead of docker CLI}
    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
    ports:
      - 8000: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:
    container_name: node
    image: newsblur/newsblur_node:latest
    user: "${CURRENT_UID}:${CURRENT_GID}"
    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
      - ${PWD}/node/originals:/srv/originals
  
  imageproxy:
    container_name: imageproxy
    # image: ghcr.io/willnorris/imageproxy:latest # Enable if you don't need arm64 and want the original imageproxy
    image: yusukeito/imageproxy:v0.11.2 # Enable if you want arm64 
    user: "${CURRENT_UID}:${CURRENT_GID}"
    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
    restart: unless-stopped
    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
    restart: unless-stopped
    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:
    container_name: db_redis
    image: redis:latest
    ports:
      - 6579:6579
    restart: unless-stopped
    volumes:
      - ./docker/redis/redis.conf:/etc/redis/redis.conf
      - ./docker/redis/redis_server.conf:/usr/local/etc/redis/redis_replica.conf
      - ./docker/volumes/redis:/data
    command: redis-server /etc/redis/redis.conf --port 6579
 
  db_elasticsearch:
    container_name: db_elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:7.16.3
    mem_limit: 512mb
    restart: unless-stopped
    environment:
      - discovery.type=single-node
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./docker/volumes/elasticsearch:/usr/share/elasticsearch/data
      - ./config/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
 
  dejavu:
    container_name: dejavu
    image: appbaseio/dejavu:3.6.0
    restart: unless-stopped
    ports:
      - 1358:1358
 
 
  db_mongo:
    container_name: db_mongo
    image: mongo:4.0
    user: mongodb
    restart: unless-stopped
    ports:
      - 29019:29019
    command: mongod --port 29019
    volumes:
      - ./docker/volumes/db_mongo:/data/db
 
  task_celery:
    container_name: task_celery
    image: newsblur/newsblur_python3
    user: "${CURRENT_UID}:${CURRENT_GID}"
    command: "celery worker -A newsblur_web -B --loglevel=INFO"
    restart: unless-stopped
    volumes:
      - ${PWD}:/srv/newsblur
    environment: 
      - DOCKERBUILD=True
 
  haproxy:
    container_name: haproxy
    image: haproxy:latest
    restart: unless-stopped
    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

Resources

Website: https://newsblur.com/

GitHub: https://github.com/samuelclay/NewsBlur

Docker Hub: https://hub.docker.com/r/newsblur/newsblur_python3

Configuration: https://github.com/samuelclay/NewsBlur/blob/master/docker-compose.yml