docker-compose.yml 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. COUNCIL_WHITELIST: "Hobart City Council,Launceston City Council,Clarence City Council"
  37. GOOGLE_MAPS_API_KEY: ${GOOGLE_MAPS_API_KEY}
  38. DOWNLOAD_ATTACHMENTS: "1"
  39. DOWNLOAD_DIR: /downloads
  40. LOOKUP_URL: ${LOOKUP_URL}
  41. LOOKUP_THROTTLE_MS: ${LOOKUP_THROTTLE_MS:-150}
  42. # Log verbosity: debug | info (default) | warn | error
  43. LOG_LEVEL: ${LOG_LEVEL:-info}
  44. # SMTP — summary error emails (optional; leave blank to disable)
  45. SMTP_HOST: ${SMTP_HOST:-}
  46. SMTP_PORT: ${SMTP_PORT:-587}
  47. SMTP_USERNAME: ${SMTP_USERNAME:-}
  48. SMTP_PASSWORD: ${SMTP_PASSWORD:-}
  49. SMTP_SMTPSecure: ${SMTP_SMTPSecure:-tls}
  50. SMTP_SENTFROM: ${SMTP_SENTFROM:-}
  51. SMTP_ADDADDRESS: ${SMTP_ADDADDRESS:-}
  52. volumes:
  53. - ./scrapers:/app/scrapers:ro
  54. - ./downloads:/downloads
  55. - ./lib:/app/lib:ro
  56. depends_on:
  57. db:
  58. condition: service_healthy
  59. # Default runs all once and exits. To loop, set SCRAPE_EVERY_MINUTES env above.
  60. command: ["/app/entrypoint.sh"]
  61. restart: unless-stopped
  62. web:
  63. build: ./web
  64. image: councils-web:latest
  65. volumes:
  66. - ./web:/var/www/html:ro
  67. - ./downloads:/srv/files:ro
  68. - ./web/000-files.conf:/etc/apache2/conf-enabled/000-files.conf:ro
  69. ports:
  70. - "9981:80"
  71. environment:
  72. MYSQL_HOST: db
  73. MYSQL_DATABASE: ${MYSQL_DATABASE}
  74. MYSQL_USER: ${MYSQL_USER}
  75. MYSQL_PASSWORD: ${MYSQL_PASSWORD}
  76. depends_on:
  77. db:
  78. condition: service_healthy
  79. restart: unless-stopped
  80. volumes:
  81. tas_councils_db_data:
  82. external: true