Skip to content

Development

Docker compose file to be use in development environment

Mounted local sources to enable local development:

  • src/
  • docker/conf/
  • docker/bin/docker-entrypoint.sh

To run it:

$ docker compose -f stack-samples/develop/compose.yml up

Content

x-common: &common
  build:
    context: ../..
    dockerfile: docker/Dockerfile
    target: dist
  platform: linux/amd64
  environment:
    - ADMIN_EMAIL=bitcaster@example.com
    - ADMIN_PASSWORD=123
    - ALLOWED_HOSTS=localhost,127.0.0.1
    - CACHE_URL=redis://redis:6379/1?client_class=django_redis.client.DefaultClient
    - CELERY_BROKER_URL=redis://redis:6379/9
    - CSRF_COOKIE_SECURE=False
    - CSRF_TRUSTED_ORIGINS=http://localhost
    - DATABASE_URL=postgres://bitcaster:password@db:5432/bitcaster
    - DEBUG=True
    - MEDIA_ROOT=/var/storage/media/
    - SECRET_KEY=super_secret_key_just_for_development_that_needs_to_be_more_than_fifty_characters
    - SECURE_HSTS_PRELOAD=0
    - SECURE_SSL_REDIRECT=False
    - SESSION_COOKIE_DOMAIN=
    - SESSION_COOKIE_SECURE=False
    - SOCIAL_AUTH_REDIRECT_IS_HTTPS=False
    - STORAGE_STATIC=django.core.files.storage.FileSystemStorage
    - STORAGE_MEDIA=django.core.files.storage.FileSystemStorage
    - STORAGE_DEFAULT=django.core.files.storage.FileSystemStorage
    - STATIC_ROOT=/var/storage/static/
    - STATIC_URL=/static/
  volumes:
    - storage_volume:/var/storage
#    - $PWD:/code/app
    - $PWD/docker/conf:/conf
    - $PWD/docker/bin/docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh
    - $PWD/src/bitcaster:/code/__pypackages__/3.12/lib/bitcaster
  restart: unless-stopped
  depends_on:
    db:
      condition: service_healthy
    redis:
      condition: service_healthy


services:
  app:
    <<: *common
    ports:
      - 8000:8000
    healthcheck:
      test: curl --fail http://127.0.0.1:8000/healthcheck/ || exit 1
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 60s
    depends_on:
      db:
          condition: service_healthy

  worker:
    <<: *common
    command: ["worker"]
    depends_on:
      db:
        condition: service_healthy

  beat:
    <<: *common
    command: ["beat"]
    depends_on:
      db:
        condition: service_healthy

  flower:
      <<: *common
      command: ["flower"]
      ports:
        - 5555:5555
      depends_on:
        db:
          condition: service_healthy

  db:
    image: postgres:15
    user: postgres
    environment:
      - PGUSER=bitcaster
      - POSTGRES_USER=bitcaster
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=bitcaster
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "pg_isready", "-U", "postgres", "-d", "bitcaster"]
      start_period: 5s
      start_interval: 1s
      interval: 5s
      timeout: 4s
      retries: 5

  redis:
    image: redis:7.2
    restart: always
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      start_period: 5s
      start_interval: 1s
      interval: 5s
      timeout: 4s
      retries: 5

volumes:
  postgres_data:
  storage_volume: