68 lines
1.8 KiB
YAML
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:
|