services: db: image: postgres:16.1-alpine container_name: db ports: - "5432:5432" environment: - POSTGRES_DB=django-api-frameworks - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres networks: - django-api-frameworks volumes: - database_postgres:/var/lib/postgresql/data healthcheck: test: [ "CMD-SHELL", "pg_isready -U postgres" ] interval: 5s timeout: 5s retries: 5 django-wsgi: container_name: django-wsgi build: context: . dockerfile: ./django-example/Dockerfile ports: - "8001:8000" environment: - DEBUG=False volumes: - ./django-example:/app command: bash ./wait_for_db.sh uv run granian --interface wsgi --loop uvloop --workers 4 --no-ws --backpressure 32 config.wsgi:application --host 0.0.0.0 --port 8000 --reload depends_on: - db networks: - django-api-frameworks django-asgi: container_name: django-asgi build: context: . dockerfile: ./django-example/Dockerfile ports: - "8002:8000" environment: - DEBUG=False volumes: - ./django-example:/app command: bash ./wait_for_db.sh uv run granian --interface asgi --loop uvloop --workers 4 --no-ws --backpressure 32 config.asgi:application --host 0.0.0.0 --port 8000 --reload depends_on: - db networks: - django-api-frameworks django-rsgi: container_name: django-rsgi build: context: . dockerfile: ./django-example/Dockerfile ports: - "8003:8000" environment: - DEBUG=False volumes: - ./django-example:/app command: bash ./wait_for_db.sh uv run granian --interface rsgi --loop uvloop --workers 4 --no-ws --backpressure 32 config.rsgi:application --host 0.0.0.0 --port 8000 --reload depends_on: - db networks: - django-api-frameworks django-uvicorn: container_name: django-uvicorn build: context: . dockerfile: ./django-example/Dockerfile ports: - "8004:8000" environment: - DEBUG=False volumes: - ./django-example:/app command: bash ./wait_for_db.sh uv run uvicorn config.asgi:application --host 0.0.0.0 --port 8000 --workers 4 depends_on: - db networks: - django-api-frameworks django-ninja: container_name: django-ninja build: context: . dockerfile: ./django-ninja-example/Dockerfile ports: - "8010:8000" environment: - DEBUG=False volumes: - ./django-ninja-example:/app command: uv run uvicorn config.asgi:application --host 0.0.0.0 --port 8000 --reload depends_on: - db networks: - django-api-frameworks django-shinobi: container_name: django-shinobi build: context: . dockerfile: ./django-shinobi-example/Dockerfile ports: - "8011:8000" environment: - DEBUG=False volumes: - ./django-shinobi-example:/app command: uv run uvicorn config.asgi:application --host 0.0.0.0 --port 8000 --reload depends_on: - db networks: - django-api-frameworks django-rapid: container_name: django-rapid build: context: . dockerfile: ./django-rapid-example/Dockerfile ports: - "8012:8000" environment: - DEBUG=False volumes: - ./django-rapid-example:/app command: uv run uvicorn config.asgi:application --host 0.0.0.0 --port 8000 --reload depends_on: - db networks: - django-api-frameworks django-bolt: container_name: django-bolt build: context: . dockerfile: ./django-bolt-example/Dockerfile ports: - "8013:8000" environment: - DEBUG=False volumes: - ./django-bolt-example:/app command: uv run python manage.py runbolt --host 0.0.0.0 --port 8000 depends_on: - db networks: - django-api-frameworks djangorestframework: container_name: djangorestframework build: context: . dockerfile: ./djangorestframework-example/Dockerfile ports: - "8014:8000" environment: - DEBUG=False volumes: - ./djangorestframework-example:/app command: uv run uvicorn config.asgi:application --host 0.0.0.0 --port 8000 --reload depends_on: - db networks: - django-api-frameworks djrest2: container_name: djrest2 build: context: . dockerfile: ./djrest2-example/Dockerfile ports: - "8015:8000" environment: - DEBUG=False volumes: - ./djrest2-example:/app command: uv run uvicorn config.asgi:application --host 0.0.0.0 --port 8000 --reload depends_on: - db networks: - django-api-frameworks fastapi: container_name: fastapi build: context: . dockerfile: ./fastapi-example/Dockerfile ports: - "8030:8000" environment: - DEBUG=False volumes: - ./fastapi-example:/app command: uv run fastapi run main.py --host 0.0.0.0 --port 8000 depends_on: - db networks: - django-api-frameworks locust: container_name: locust build: context: . dockerfile: ./load-testing/Dockerfile ports: - "8089:8089" volumes: - ./load-testing:/usr/src/app networks: - django-api-frameworks volumes: database_postgres: networks: django-api-frameworks: driver: bridge