docker-compose.yml 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. version: '3'
  2. x-logging:
  3. &default-logging
  4. driver: "json-file"
  5. options:
  6. max-size: "150m"
  7. max-file: "2"
  8. services:
  9. nginx:
  10. image: nginx:1.25.2
  11. logging: *default-logging
  12. restart: unless-stopped
  13. ports:
  14. - "80:80"
  15. - "443:443"
  16. depends_on:
  17. - web
  18. networks:
  19. - main
  20. volumes:
  21. - ./nginx:/etc/nginx/conf.d
  22. - ./certbot/conf:/etc/nginx/ssl
  23. - ./certbot/data:/var/www/certbot
  24. - static_volume:/app/static
  25. - media_volume:/app/images
  26. certbot:
  27. image: certbot/certbot:latest
  28. command: certonly --webroot --webroot-path=/var/www/certbot --email ${EMAIL} --agree-tos --no-eff-email -d ${DOMAIN} -d www.${DOMAIN}
  29. #command: renew --webroot --webroot-path /var/www/certbot
  30. logging: *default-logging
  31. volumes:
  32. - ./certbot/conf:/etc/letsencrypt
  33. - ./certbot/logs:/var/log/letsencrypt
  34. - ./certbot/data:/var/www/certbot
  35. db:
  36. build: postgres-docker
  37. env_file: .env
  38. entrypoint: /bookwyrm-entrypoint.sh
  39. command: cron postgres
  40. volumes:
  41. - pgdata:/var/lib/postgresql/data
  42. - backups:/backups
  43. networks:
  44. - main
  45. web:
  46. build: .
  47. env_file: .env
  48. command: gunicorn bookwyrm.wsgi:application --threads=8 --bind 0.0.0.0:8000
  49. logging: *default-logging
  50. volumes:
  51. - .:/app
  52. - static_volume:/app/static
  53. - media_volume:/app/images
  54. depends_on:
  55. - db
  56. - celery_worker
  57. - redis_activity
  58. networks:
  59. - main
  60. ports:
  61. - "8000"
  62. redis_activity:
  63. image: redis:7.2.1
  64. command: redis-server --requirepass ${REDIS_ACTIVITY_PASSWORD} --appendonly yes --port ${REDIS_ACTIVITY_PORT}
  65. logging: *default-logging
  66. volumes:
  67. - ./redis.conf:/etc/redis/redis.conf
  68. - redis_activity_data:/data
  69. env_file: .env
  70. networks:
  71. - main
  72. restart: on-failure
  73. redis_broker:
  74. image: redis:7.2.1
  75. command: redis-server --requirepass ${REDIS_BROKER_PASSWORD} --appendonly yes --port ${REDIS_BROKER_PORT}
  76. logging: *default-logging
  77. volumes:
  78. - ./redis.conf:/etc/redis/redis.conf
  79. - redis_broker_data:/data
  80. env_file: .env
  81. networks:
  82. - main
  83. restart: on-failure
  84. celery_worker:
  85. env_file: .env
  86. build: .
  87. networks:
  88. - main
  89. 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
  90. logging: *default-logging
  91. volumes:
  92. - .:/app
  93. - static_volume:/app/static
  94. - media_volume:/app/images
  95. depends_on:
  96. - db
  97. - redis_broker
  98. restart: on-failure
  99. celery_beat:
  100. env_file: .env
  101. build: .
  102. networks:
  103. - main
  104. command: celery -A celerywyrm beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler
  105. logging: *default-logging
  106. volumes:
  107. - .:/app
  108. - static_volume:/app/static
  109. - media_volume:/app/images
  110. depends_on:
  111. - celery_worker
  112. restart: on-failure
  113. flower:
  114. build: .
  115. command: celery -A celerywyrm flower --basic_auth=${FLOWER_USER}:${FLOWER_PASSWORD} --url_prefix=flower
  116. logging: *default-logging
  117. env_file: .env
  118. volumes:
  119. - .:/app
  120. networks:
  121. - main
  122. depends_on:
  123. - db
  124. - redis_broker
  125. restart: on-failure
  126. dev-tools:
  127. build: dev-tools
  128. env_file: .env
  129. volumes:
  130. - /app/dev-tools/
  131. - .:/app
  132. volumes:
  133. pgdata:
  134. backups:
  135. static_volume:
  136. media_volume:
  137. redis_broker_data:
  138. redis_activity_data:
  139. networks:
  140. main: