version: '3' services: nginx: image: nginx:latest 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 volumes: - ./certbot/conf:/etc/letsencrypt - ./certbot/logs:/var/log/letsencrypt - ./certbot/data:/var/www/certbot db: build: postgres-docker env_file: .env 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 volumes: - .:/app - static_volume:/app/static - media_volume:/app/images depends_on: - db - celery_worker networks: - main ports: - 8000:8000 redis: image: redis command: redis-server --requirepass ${REDIS_PASSWORD} volumes: - ./redis.conf:/etc/redis/redis.conf env_file: .env ports: - 6379:6379 networks: - main restart: on-failure celery_worker: env_file: .env build: . networks: - main command: celery -A celerywyrm worker -l info volumes: - .:/app - static_volume:/app/static - media_volume:/app/images depends_on: - db - redis restart: on-failure flower: build: . command: flower --port=8888 --basic_auth=${FLOWER_USER}:${FLOWER_PASSWORD} env_file: .env environment: - CELERY_BROKER_URL=${CELERY_BROKER} networks: - main depends_on: - db - redis restart: on-failure ports: - 8888:8888 volumes: pgdata: backups: static_volume: media_volume: networks: main: