Files
deployment-server/docker-compose.yml
T

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