123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- version: '3'
- x-logging:
- &default-logging
- driver: "json-file"
- options:
- max-size: "150m"
- max-file: "2"
- services:
- nginx:
- image: nginx:1.25.2
- logging: *default-logging
- restart: unless-stopped
- ports:
- - "80:80"
- - "443:443"
- depends_on:
- - web
- networks:
- - main
- volumes:
- - ./nginx:/etc/nginx/conf.d
- - ./certbot/conf:/etc/nginx/ssl
- - ./certbot/data:/var/www/certbot
- - static_volume:/app/static
- - media_volume:/app/images
- certbot:
- image: certbot/certbot:latest
- command: certonly --webroot --webroot-path=/var/www/certbot --email ${EMAIL} --agree-tos --no-eff-email -d ${DOMAIN} -d www.${DOMAIN}
- #command: renew --webroot --webroot-path /var/www/certbot
- logging: *default-logging
- volumes:
- - ./certbot/conf:/etc/letsencrypt
- - ./certbot/logs:/var/log/letsencrypt
- - ./certbot/data:/var/www/certbot
- db:
- build: postgres-docker
- env_file: .env
- entrypoint: /bookwyrm-entrypoint.sh
- command: cron postgres
- volumes:
- - pgdata:/var/lib/postgresql/data
- - backups:/backups
- networks:
- - main
- web:
- build: .
- env_file: .env
- command: gunicorn bookwyrm.wsgi:application --threads=8 --bind 0.0.0.0:8000
- logging: *default-logging
- 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:7.2.1
- command: redis-server --requirepass ${REDIS_ACTIVITY_PASSWORD} --appendonly yes --port ${REDIS_ACTIVITY_PORT}
- logging: *default-logging
- volumes:
- - ./redis.conf:/etc/redis/redis.conf
- - redis_activity_data:/data
- env_file: .env
- networks:
- - main
- restart: on-failure
- redis_broker:
- image: redis:7.2.1
- command: redis-server --requirepass ${REDIS_BROKER_PASSWORD} --appendonly yes --port ${REDIS_BROKER_PORT}
- logging: *default-logging
- 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,streams,images,suggested_users,email,connectors,lists,inbox,imports,import_triggered,broadcast,misc
- logging: *default-logging
- 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
- logging: *default-logging
- 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} --url_prefix=flower
- logging: *default-logging
- env_file: .env
- volumes:
- - .:/app
- networks:
- - main
- depends_on:
- - db
- - redis_broker
- restart: on-failure
- dev-tools:
- build: dev-tools
- env_file: .env
- volumes:
- - /app/dev-tools/
- - .:/app
- volumes:
- pgdata:
- backups:
- static_volume:
- media_volume:
- redis_broker_data:
- redis_activity_data:
- networks:
- main:
|