197 lines
5.5 KiB
YAML
197 lines
5.5 KiB
YAML
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 |