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: - app-files:/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: - node-files:/srv 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 - app-files:/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 postgres"] 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: elasticsearch:7.11.1 ports: - 9200:9200 volumes: - ./docker/volumes/elasticsearch:/usr/share/elasticsearch/data 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 celerybeat: container_name: celerybeat 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 volumes: - app-files:/srv/newsblur - ./config:/etc/supervisor/conf.d/ task_celery: container_name: task_celery image: newsblur/newsblur_python3 command: "celery worker -A newsblur_web --loglevel=INFO" volumes: - app-files:/srv/newsblur environment: - DOCKERBUILD=True user: "${CURRENT_UID}:${CURRENT_GID}" haproxy: domainname: 'nb.local.com' container_name: haproxy image: haproxy:1.8.22 depends_on: - nginx - newsblur_web - newsblur_node - 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 - app-files:/srv/newsblur volumes: app-files: driver_opts: type: nfs device: ${PWD} o: bind node-files: driver_opts: type: nfs device: ${PWD}/node o: bind