docker-compose.yml
yml
x-environment: &oncall-environment
DATABASE_TYPE: sqlite3
BROKER_TYPE: redis
BASE_URL: http://engine:8080
SECRET_KEY: LQvXRJjAUe9piep89ljDvqAGQktmxXLG
FEATURE_PROMETHEUS_EXPORTER_ENABLED: ${FEATURE_PROMETHEUS_EXPORTER_ENABLED:-false}
PROMETHEUS_EXPORTER_SECRET: ${PROMETHEUS_EXPORTER_SECRET:-}
REDIS_URI: redis://:redis_redis@redis:6379/0
DJANGO_SETTINGS_MODULE: settings.hobby
CELERY_WORKER_QUEUE: "default,critical,long,slack,telegram,mattermost,webhook,retry,celery,grafana"
CELERY_WORKER_CONCURRENCY: "1"
CELERY_WORKER_MAX_TASKS_PER_CHILD: "100"
CELERY_WORKER_SHUTDOWN_INTERVAL: "65m"
CELERY_WORKER_BEAT_ENABLED: "True"
GRAFANA_API_URL: http://grafana:3000
services:
engine:
image: grafana/oncall:latest
container_name: oncall_engine
restart: always
ports:
- "10258:8080"
command: sh -c "uwsgi --ini uwsgi.ini"
networks:
- 1panel-network
extra_hosts:
- "host.docker.internal:host-gateway"
environment: *oncall-environment
volumes:
- ./oncall_data:/var/lib/oncall
depends_on:
oncall_db_migration:
condition: service_completed_successfully
celery:
image: grafana/oncall:latest
container_name: oncall_celery
restart: always
command: sh -c "./celery_with_exporter.sh"
environment: *oncall-environment
volumes:
- ./oncall_data:/var/lib/oncall
networks:
- 1panel-network
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
oncall_db_migration:
condition: service_completed_successfully
oncall_db_migration:
image: grafana/oncall:latest
command: python manage.py migrate --noinput
environment: *oncall-environment
volumes:
- ./oncall_data:/var/lib/oncall
grafana:
image: grafana/grafana:12.4.3
container_name: grafana
restart: always
ports:
- "13000:3000"
networks:
- 1panel-network
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
GF_FEATURE_TOGGLES_ENABLE: externalServiceAccounts
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: proposal8-proud-modulator
GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: grafana-oncall-app
GF_INSTALL_PLUGINS: grafana-oncall-app
GF_AUTH_MANAGED_SERVICE_ACCOUNTS_ENABLED: true
volumes:
- ./grafana_data:/var/lib/grafana
- ./grafana.ini:/etc/grafana/grafana.ini
networks:
1panel-network:
external: true宿主机执行执行
bash
curl -X POST 'http://admin:proposal8-proud-modulator@localhost:13000/api/plugins/grafana-oncall-app/settings' \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"jsonData": {
"stackId": 5,
"orgId": 100,
"onCallApiUrl": "http://engine:8080/",
"grafanaUrl": "http://grafana:3000/"
}
}'