Files
meta_api_grabber/docker-compose.yml

68 lines
1.8 KiB
YAML

version: '3.8'
services:
timescaledb:
image: timescale/timescaledb:latest-pg16
container_name: meta_timescaledb
ports:
- "5555:5432"
environment:
POSTGRES_DB: meta_insights
POSTGRES_USER: meta_user
POSTGRES_PASSWORD: meta_password
volumes:
- timescale_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U meta_user -d meta_insights"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
# Meta API Grabber - Scheduled data collection
meta-grabber:
build:
context: .
dockerfile: Dockerfile
container_name: meta_api_grabber
environment:
# Database connection (connects to timescaledb service)
DATABASE_URL: postgresql://meta_user:meta_password@timescaledb:5432/meta_insights
env_file:
- .env # Must contain META_ACCESS_TOKEN, META_APP_ID, META_APP_SECRET
volumes:
# Mount .env for token updates (auto-refresh will update the file)
- ./.env:/app/.env
# Mount token metadata file (preserves token refresh state across restarts)
- ./.meta_token.json:/app/.meta_token.json
depends_on:
timescaledb:
condition: service_healthy
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# Optional: Grafana for visualization
grafana:
image: grafana/grafana:latest
container_name: meta_grafana
ports:
- "3555:3000"
environment:
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: admin
GF_INSTALL_PLUGINS: grafana-clock-panel
volumes:
- grafana_data:/var/lib/grafana
depends_on:
timescaledb:
condition: service_healthy
restart: unless-stopped
volumes:
timescale_data:
grafana_data: