services: backend: container_name: backend-vontor-cz build: context: ./backend dockerfile: dockerfile restart: always env_file: - ./backend/.env networks: - app_network depends_on: - db - redis volumes: - static-data:/app/collectedstaticfiles - media-data:/app/media command: sh -c " python manage.py migrate --verbosity 3 --noinput && python manage.py check && python manage.py collectstatic --clear --noinput --verbosity 3 && gunicorn -k uvicorn.workers.UvicornWorker vontor_cz.asgi:application --bind 0.0.0.0:8000" ports: - "8000:8000" db: image: postgres:15-alpine container_name: postgres-vontor-cz restart: always env_file: - ./backend/.env volumes: - db-data:/var/lib/postgresql/data ports: - "5432:5432" networks: - app_network redis: #extremly fast db, stores data in RAM memory container_name: redis-vontor-cz image: redis:alpine restart: always env_file: - ./backend/.env volumes: - redis-data:/data expose: - "6379" networks: - app_network celery: #task queue for handling asynchronous/hard tasks container_name: celery-vontor-cz build: context: ./backend dockerfile: dockerfile command: sh -c "python manage.py migrate --noinput && celery -A vontor_cz worker --loglevel=info" restart: always env_file: - ./backend/.env depends_on: - redis - db - backend networks: - app_network celery-beat: #periodic tasks scheduler container_name: celery-beat-vontor-cz build: context: ./backend dockerfile: dockerfile command: sh -c "python manage.py migrate --noinput && celery -A vontor_cz beat --loglevel=info" restart: always env_file: - ./backend/.env depends_on: - redis - db - backend networks: - app_network #end of backend services ----------------------- nginx: #web server, reverse proxy, serves static files container_name: nginx-vontor-cz build: context: ./frontend dockerfile: Dockerfile.prod env_file: - ./frontend/.env ports: # - 80:80 - 9000:80 depends_on: - backend networks: - app_network volumes: - static-data:/app/collectedstaticfiles # static (Django) - media-data:/app/media # media (Django) - ./frontend/nginx/nginx.conf:/etc/nginx/nginx.conf:ro networks: app_network: driver: bridge volumes: redis-data: db-data: static-data: media-data: