version: '3' services: nginx: image: nginx:latest ports: - 1333:80 depends_on: - web networks: - main volumes: - ./nginx:/etc/nginx/conf.d - static_volume:/app/static - media_volume:/app/images db: image: postgres env_file: .env volumes: - pgdata:/var/lib/postgresql/data networks: - main web: build: . env_file: .env command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/app - static_volume:/app/static - media_volume:/app/images depends_on: - db - celery_worker - redis_activity networks: - main ports: - 8000 redis_activity: image: redis command: redis-server --requirepass ${REDIS_ACTIVITY_PASSWORD} --appendonly yes --port ${REDIS_ACTIVITY_PORT} volumes: - ./redis.conf:/etc/redis/redis.conf - redis_activity_data:/data env_file: .env networks: - main restart: on-failure redis_broker: image: redis command: redis-server --requirepass ${REDIS_BROKER_PASSWORD} --appendonly yes --port ${REDIS_BROKER_PORT} volumes: - ./redis.conf:/etc/redis/redis.conf - redis_broker_data:/data env_file: .env networks: - main restart: on-failure celery_worker: env_file: .env build: . networks: - main command: celery -A celerywyrm worker -l info -Q high_priority,medium_priority,low_priority volumes: - .:/app - static_volume:/app/static - media_volume:/app/images depends_on: - db - redis_broker restart: on-failure celery_beat: env_file: .env build: . networks: - main command: celery -A celerywyrm beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler volumes: - .:/app - static_volume:/app/static - media_volume:/app/images depends_on: - celery_worker restart: on-failure flower: build: . command: celery -A celerywyrm flower --basic_auth=${FLOWER_USER}:${FLOWER_PASSWORD} env_file: .env ports: - ${FLOWER_PORT} volumes: - .:/app networks: - main depends_on: - db - redis_broker restart: on-failure dev-tools: build: dev-tools env_file: .env volumes: - .:/app volumes: pgdata: static_volume: media_volume: redis_broker_data: redis_activity_data: networks: main: