docker-compose-production.yml
version: "3"
services:
memcached:
image: memcached:1.6.15
ports:
- "11211:11211"
django:
image: ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/evalai-production-backend:${COMMIT_ID}
env_file:
- docker/prod/docker_production.env
build:
context: ./
dockerfile: docker/prod/django/Dockerfile
ports:
- "8000:8000"
logging:
driver: awslogs
options:
awslogs-region: ${AWS_DEFAULT_REGION}
awslogs-group: django_production
awslogs-create-group: "true"
celery:
image: ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/evalai-production-celery:${COMMIT_ID}
env_file:
- docker/prod/docker_production.env
build:
context: ./
dockerfile: docker/prod/celery/Dockerfile
depends_on:
- django
logging:
driver: awslogs
options:
awslogs-region: ${AWS_DEFAULT_REGION}
awslogs-group: celery_production
awslogs-create-group: "true"
worker:
image: ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/evalai-production-worker:${COMMIT_ID}
build:
context: ./
dockerfile: docker/prod/worker/Dockerfile
env_file:
- docker/prod/docker_production.env
worker_py3.8:
image: ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/evalai-production-worker-py3.8:${COMMIT_ID}
build:
context: ./
dockerfile: docker/prod/worker_py3.8/Dockerfile
env_file:
- docker/prod/docker_production.env
nodejs:
image: ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/evalai-production-frontend:${COMMIT_ID}
build:
context: ./
dockerfile: docker/prod/nodejs/Dockerfile
args:
NODE_ENV: production
ports:
- "80:80"
- "443:443"
volumes:
- /code/node_modules
- /code/bower_components
logging:
driver: awslogs
options:
awslogs-region: ${AWS_DEFAULT_REGION}
awslogs-group: nodejs_production
awslogs-create-group: "true"
remote-worker:
image: ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/evalai-production-remote-worker:${COMMIT_ID}
build:
context: ./
dockerfile: docker/prod/worker/Dockerfile
command: ["python", "-m", "scripts.workers.remote_submission_worker"]
env_file:
- docker/prod/docker_remote_worker.env
code-upload-worker:
image: ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/evalai-production-code-upload-worker:${COMMIT_ID}
env_file:
- docker/prod/docker_code_upload_worker.env
build:
context: ./
dockerfile: docker/prod/code-upload-worker/Dockerfile
prometheus:
hostname: prometheus
image: prom/prometheus:latest
user: "1000"
volumes:
- ./monitoring/prometheus/prometheus_production.yml:/etc/prometheus/prometheus.yml
- ./monitoring/prometheus/rules.yml:/etc/rules/rules.yml
- ./monitoring/prometheus/prometheus_db:/var/lib/prometheus
- ./monitoring/prometheus/prometheus_db:/prometheus
- ./monitoring/prometheus/prometheus_db:/etc/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--web.external-url=http://localhost:9090/prometheus'
ports:
- '9090:9090'
grafana:
hostname: grafana
image: grafana/grafana:latest
user: "1000"
env_file:
- docker/prod/docker_production.env
volumes:
- ./monitoring/grafana/grafana_db:/var/lib/grafana
depends_on:
- prometheus
ports:
- '3000:3000'
statsd-exporter:
hostname: statsd
image: prom/statsd-exporter:latest
command:
- '--log.level=info'
- '--web.telemetry-path=/statsd/metrics'
ports:
- '9125:9125/udp'
- '9125:9125/tcp'
- '9102:9102'
node_exporter:
hostname: node_exporter
image: prom/node-exporter
ports:
- '9100:9100'
nginx-ingress:
image: ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/evalai-production-nginx-ingress:${COMMIT_ID}
build:
context: ./
dockerfile: docker/prod/nginx-ingress/Dockerfile
args:
MONITORING_ENV: production
depends_on:
- prometheus
- grafana
- statsd-exporter
- alert-manager
ports:
- '80:80'
- '443:443'
alert-manager:
hostname: alert_manager
image: prom/alertmanager:v0.24.0
user: "1000"
volumes:
- ./monitoring/prometheus:/prometheus
- ./monitoring/alertmanager/data:/data
- ./monitoring/alertmanager/templates:/etc/alertmanager/templates
command:
- '--config.file=/prometheus/alert_manager.yml'
- '--storage.path=/data'
- '--web.external-url=http://localhost:9093/alert_manager'
ports:
- '9093:9093'