version: "3.8" volumes: righttree-postgres-data: name: righttree-postgres-data x-django: &django image: right-tree depends_on: postgres: condition: service_healthy env_file: .env user: "$UID:$GID" restart: always services: backend: <<: *django container_name: backend expose: - "8000" command: - gunicorn - --bind=0.0.0.0:8000 - right_tree.wsgi nginx: container_name: nginx restart: always image: nginx depends_on: - backend volumes: - ./nginx.production.conf:/etc/nginx/nginx.conf - ./backend/right_tree/staticfiles:/etc/nginx/html/staticfiles - ./frontend/build:/etc/nginx/html/build - /etc/letsencrypt:/etc/letsencrypt ports: - "80:80" - "443:443" postgres: image: postgis/postgis:13-3.1 restart: always container_name: postgres volumes: - righttree-postgres-data:/var/lib/postgresql/data - ./create_database.sql:/docker-entrypoint-initdb.d/create_database.sql ports: - "5432:5432" environment: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} healthcheck: test: ["CMD", "pg_isready", "--dbname", "righttree", "--username", "righttree"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7.0.8 restart: always container_name: redis expose: - "6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 celery: <<: *django container_name: celery command: - celery - -A - right_tree.api - worker depends_on: postgres: condition: service_healthy redis: condition: service_healthy deploy: resources: limits: cpus: '1'