Jenkins + Minio + Prometheus + Grafana v1
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
services:
|
||||
minio:
|
||||
image: minio/minio:latest
|
||||
container_name: minio
|
||||
command: server /data --console-address ":9001"
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MINIO_ROOT_USER: minioadmin
|
||||
MINIO_ROOT_PASSWORD: LIGTNbUgQr
|
||||
ports:
|
||||
- "9000:9000" # API
|
||||
- "9001:9001" # Consola web
|
||||
volumes:
|
||||
- ./data/minio/data:/data
|
||||
#- ./data/certs:/root/.minio/certs:ro
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
jenkins:
|
||||
build:
|
||||
context: ./data/jenkins
|
||||
dockerfile: Dockerfile
|
||||
container_name: jenkins-server
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- JAVA_OPTS=-Djenkins.install.runSetupWizard=false
|
||||
expose:
|
||||
- "8080"
|
||||
volumes:
|
||||
- ./data/jenkins_home:/var/jenkins_home
|
||||
- ./data/jenkins/jenkins.yaml:/usr/share/jenkins/ref/jenkins.yaml:ro
|
||||
- ./data/jenkins/deploy:/opt/deploy:ro
|
||||
- ./data/jenkins/history:/opt/history:ro
|
||||
- ./data/jenkins/pipelines/Jenkinsfile.sco:/opt/jenkins/Jenkinsfile.sco:ro
|
||||
- ./data/jenkins/pipelines/Jenkinsfile.sco.reports:/opt/jenkins/Jenkinsfile.sco.reports:ro
|
||||
- ./data/jenkins/pipelines/Jenkinsfile.sco.reports.history:/opt/jenkins/Jenkinsfile.sco.reports.history:ro
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
npm:
|
||||
image: jc21/nginx-proxy-manager:latest
|
||||
container_name: nginx-proxy-manager
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "81:81"
|
||||
volumes:
|
||||
- ./data/npm/data:/data
|
||||
- ./data/npm/letsencrypt:/etc/letsencrypt
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
prometheus-central:
|
||||
image: prom/prometheus:latest
|
||||
container_name: prometheus_central
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9090:9090"
|
||||
volumes:
|
||||
# Archivo de configuracion alojado en data
|
||||
- ./data/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||||
# Carpeta donde se guarda el historial de metricas
|
||||
- ./data/prometheus/data:/prometheus
|
||||
command:
|
||||
- '--config.file=/etc/prometheus/prometheus.yml'
|
||||
- '--storage.tsdb.path=/prometheus'
|
||||
- '--web.enable-remote-write-receiver'
|
||||
- '--query.lookback-delta=2m'
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
prom-label-proxy:
|
||||
image: quay.io/prometheuscommunity/prom-label-proxy:latest
|
||||
container_name: prom-label-proxy
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8081:8080"
|
||||
command:
|
||||
- "-insecure-listen-address=0.0.0.0:8080"
|
||||
- "-upstream=http://prometheus-central:9090"
|
||||
- "-label=cliente"
|
||||
- "-enable-label-apis"
|
||||
depends_on:
|
||||
- prometheus-central
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:13.1.1
|
||||
container_name: grafana_central
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
- GF_SERVER_DOMAIN=laoficina1782.com
|
||||
- GF_SESSION_COOKIE_DOMAIN=.laoficina1782.com
|
||||
- GF_SECURITY_ALLOW_EMBEDDING=true
|
||||
- GF_SECURITY_COOKIE_SAMESITE=none
|
||||
- GF_SECURITY_COOKIE_SECURE=true
|
||||
- GF_DATAPROXY_CONCURRENT_QUERIES=4
|
||||
- GF_DATAPROXY_TIMEOUT=900
|
||||
- GF_DATAPROXY_DIAL_TIMEOUT=900
|
||||
- GF_DATAPROXY_KEEPALIVE=900
|
||||
volumes:
|
||||
- ./data/grafana/data:/var/lib/grafana
|
||||
depends_on:
|
||||
- prometheus-central
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
node-exporter:
|
||||
image: prom/node-exporter:latest
|
||||
container_name: node-exporter
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- proxy
|
||||
volumes:
|
||||
- /proc:/host/proc:ro
|
||||
- /sys:/host/sys:ro
|
||||
- /:/rootfs:ro
|
||||
- ./data/node-exporter/textfile_inventory:/etc/prometheus/textfile_inventory
|
||||
command:
|
||||
- '--path.procfs=/host/proc'
|
||||
- '--path.sysfs=/host/sys'
|
||||
- '--path.rootfs=/rootfs'
|
||||
- '--collector.textfile.directory=/etc/prometheus/textfile_inventory'
|
||||
|
||||
cloudflared:
|
||||
image: cloudflare/cloudflared:latest
|
||||
container_name: cloudflared
|
||||
restart: unless-stopped
|
||||
command: tunnel --no-autoupdate run
|
||||
environment:
|
||||
- TUNNEL_TOKEN=${CLOUDFLARE_TUNNEL_TOKEN}
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
mysql-db:
|
||||
image: mysql:8.0
|
||||
container_name: mysql-db
|
||||
restart: unless-stopped
|
||||
# sin exponer puertos, lo maneja ng
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_DATABASE: sco_telemetry
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
volumes:
|
||||
- ./data/mysql/data:/var/lib/mysql
|
||||
# script de inicializacion
|
||||
- ./data/mysql/init:/docker-entrypoint-initdb.d
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
central-api:
|
||||
build:
|
||||
# Compilamos desde la estructura data/api-central
|
||||
context: ./data/central-api
|
||||
dockerfile: Dockerfile
|
||||
container_name: central-api
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- "5000"
|
||||
environment:
|
||||
- DB_HOST=mysql-db
|
||||
- DB_PORT=3306
|
||||
- DB_USER=${MYSQL_USER}
|
||||
- DB_PASSWORD=${MYSQL_PASSWORD}
|
||||
- DB_NAME=sco_telemetry
|
||||
- ALERTS_LOG_FILE=/data/alerts/alerts.txt
|
||||
volumes:
|
||||
- ./data/alerts:/data/alerts
|
||||
depends_on:
|
||||
mysql-db:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
# interfaz UI para probar registros
|
||||
adminer:
|
||||
image: adminer
|
||||
container_name: adminer
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080"
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
driver: bridge
|
||||
Reference in New Issue
Block a user