docker-compose.yml 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. services:
  2. db:
  3. image: mariadb:10.11
  4. environment:
  5. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
  6. MYSQL_DATABASE: ${MYSQL_DATABASE}
  7. MYSQL_USER: ${MYSQL_USER}
  8. MYSQL_PASSWORD: ${MYSQL_PASSWORD}
  9. volumes:
  10. - tas_councils_db_data:/var/lib/mysql
  11. restart: unless-stopped
  12. ports:
  13. - "3306:3306"
  14. healthcheck:
  15. test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uscraper", "-pscr@perpass"]
  16. interval: 10s
  17. timeout: 5s
  18. retries: 10
  19. adminer:
  20. image: adminer
  21. ports:
  22. - "9980:8080"
  23. depends_on:
  24. - db
  25. restart: unless-stopped
  26. scraper:
  27. build: .
  28. environment:
  29. MYSQL_HOST: db
  30. MYSQL_PORT: "3306"
  31. MYSQL_DB: ${MYSQL_DATABASE}
  32. MYSQL_USER: ${MYSQL_USER}
  33. MYSQL_PASSWORD: ${MYSQL_PASSWORD}
  34. # If set, the runner loops. Minutes between runs:
  35. SCRAPE_EVERY_MINUTES: "720"
  36. GOOGLE_MAPS_API_KEY: ${GOOGLE_MAPS_API_KEY}
  37. DOWNLOAD_ATTACHMENTS: "1"
  38. DOWNLOAD_DIR: /downloads
  39. LOOKUP_URL: ${LOOKUP_URL}
  40. LOOKUP_THROTTLE_MS: ${LOOKUP_THROTTLE_MS:-150}
  41. # Log verbosity: debug | info (default) | warn | error
  42. LOG_LEVEL: ${LOG_LEVEL:-info}
  43. # SMTP — summary error emails (optional; leave blank to disable)
  44. SMTP_HOST: ${SMTP_HOST:-}
  45. SMTP_PORT: ${SMTP_PORT:-587}
  46. SMTP_USERNAME: ${SMTP_USERNAME:-}
  47. SMTP_PASSWORD: ${SMTP_PASSWORD:-}
  48. SMTP_SMTPSecure: ${SMTP_SMTPSecure:-tls}
  49. SMTP_SENTFROM: ${SMTP_SENTFROM:-}
  50. SMTP_ADDADDRESS: ${SMTP_ADDADDRESS:-}
  51. volumes:
  52. - ./scrapers:/app/scrapers:ro
  53. - ./downloads:/downloads
  54. - ./lib:/app/lib:ro
  55. depends_on:
  56. db:
  57. condition: service_healthy
  58. # Default runs all once and exits. To loop, set SCRAPE_EVERY_MINUTES env above.
  59. command: ["/app/entrypoint.sh"]
  60. restart: unless-stopped
  61. web:
  62. build: ./web
  63. image: councils-web:latest
  64. volumes:
  65. - ./web:/var/www/html:ro
  66. - ./downloads:/srv/files:ro
  67. - ./web/000-files.conf:/etc/apache2/conf-enabled/000-files.conf:ro
  68. ports:
  69. - "9981:80"
  70. environment:
  71. MYSQL_HOST: db
  72. MYSQL_DATABASE: ${MYSQL_DATABASE}
  73. MYSQL_USER: ${MYSQL_USER}
  74. MYSQL_PASSWORD: ${MYSQL_PASSWORD}
  75. depends_on:
  76. db:
  77. condition: service_healthy
  78. restart: unless-stopped
  79. volumes:
  80. tas_councils_db_data:
  81. external: true