services: postgres: image: postgres:15-alpine container_name: rfiles-db volumes: - rfiles_postgres_data:/var/lib/postgresql/data environment: - POSTGRES_DB=rfiles - POSTGRES_USER=rfiles - POSTGRES_PASSWORD=${DB_PASSWORD:-rfiles_dev_password} ports: - "5433:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U rfiles -d rfiles"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: rfiles-redis command: redis-server --requirepass ${REDIS_PASSWORD:-rfiles_redis_dev} ports: - "6380:6379" healthcheck: test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-rfiles_redis_dev}", "ping"] interval: 10s timeout: 5s retries: 5 backend: build: . container_name: rfiles-api volumes: - .:/app - rfiles_media:/app/media environment: - DATABASE_URL=postgresql://rfiles:${DB_PASSWORD:-rfiles_dev_password}@postgres:5432/rfiles - CELERY_BROKER_URL=redis://:${REDIS_PASSWORD:-rfiles_redis_dev}@redis:6379/0 - CELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD:-rfiles_redis_dev}@redis:6379/0 - DJANGO_SETTINGS_MODULE=config.settings - DEBUG=True - ALLOWED_HOSTS=localhost,127.0.0.1,rfiles.online,.rfiles.online - SHARE_BASE_URL=http://localhost:8000 ports: - "8000:8000" depends_on: postgres: condition: service_healthy redis: condition: service_healthy command: > sh -c "python manage.py migrate --noinput && python manage.py runserver 0.0.0.0:8000" celery-worker: build: . container_name: rfiles-celery-worker volumes: - .:/app - rfiles_media:/app/media environment: - DATABASE_URL=postgresql://rfiles:${DB_PASSWORD:-rfiles_dev_password}@postgres:5432/rfiles - CELERY_BROKER_URL=redis://:${REDIS_PASSWORD:-rfiles_redis_dev}@redis:6379/0 - CELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD:-rfiles_redis_dev}@redis:6379/0 - DJANGO_SETTINGS_MODULE=config.settings depends_on: postgres: condition: service_healthy redis: condition: service_healthy command: celery -A config worker --loglevel=info --concurrency=2 volumes: rfiles_postgres_data: rfiles_media: