mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-10-31 22:19:00 +00:00
fe020b7c95
Docker makes it extremely difficult to do time-based retention, unfortunately, so space-based is the best we'll be able to do. This is probably fairly aggressive for bookwyrm.social, and not nearly aggressive enough for smaller instances, but it's better than the current status quo. I've only tested that this builds and runs, not that it actually has the intended effect.
141 lines
3.4 KiB
YAML
141 lines
3.4 KiB
YAML
version: '3'
|
|
|
|
x-logging:
|
|
&default-logging
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "150m"
|
|
max-file: "2"
|
|
|
|
services:
|
|
nginx:
|
|
image: nginx:latest
|
|
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 --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
|
|
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
|
|
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,imports,broadcast
|
|
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
|
|
volumes:
|
|
pgdata:
|
|
backups:
|
|
static_volume:
|
|
media_volume:
|
|
redis_broker_data:
|
|
redis_activity_data:
|
|
networks:
|
|
main:
|