version: '3.8' services: db: restart: always image: "postgres:12.3-alpine" environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_PORT=5432 volumes: - postgres_data:/var/lib/postgresql/data/ networks: - rengine_network web: restart: always image: docker.pkg.github.com/yogeshojha/rengine/rengine:latest build: . command: gunicorn reNgine.wsgi:application --bind 0.0.0.0:8000 --limit-request-line 8000 volumes: - .:/app - static_volume:/app/staticfiles - media_volume:/app/tools/scan_results - gf_patterns:/root/.gf depends_on: - db - redis - celery - celery-beat networks: rengine_network: aliases: - rengine proxy: restart: always image: nginx:alpine ports: - 80:80/tcp - 443:443/tcp depends_on: - web - db - redis secrets: - source: proxy.ca target: /etc/nginx/certs/rengine_chain.pem - source: proxy.cert target: /etc/nginx/certs/rengine.pem - source: proxy.key target: /etc/nginx/certs/rengine_rsa.key volumes: - ./config/nginx/rengine.conf:/etc/nginx/conf.d/rengine.conf:ro - static_volume:/app/staticfiles - media_volume:/app/tools/scan_results - gf_patterns:/root/.gf networks: - rengine_network redis: image: redis:alpine networks: - rengine_network celery: build: . command: celery -A reNgine worker -l INFO volumes: - ./celery_storage:/celery_storage environment: - DEBUG=1 volumes: - static_volume:/app/staticfiles - media_volume:/app/tools/scan_results - gf_patterns:/root/.gf depends_on: - redis networks: - rengine_network celery-beat: build: . command: celery -A reNgine beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler environment: - DEBUG=1 depends_on: - redis networks: - rengine_network networks: rengine_network: volumes: postgres_data: static_volume: media_volume: gf_patterns: secrets: proxy.ca: file: ./secrets/certs/rengine_chain.pem proxy.key: file: ./secrets/certs/rengine_rsa.key proxy.cert: file: ./secrets/certs/rengine.pem