Files
docker-compose/grafana-prometheus-jenkins/docker-compose.yml
Greg Hendrickson 2e5761dded re-folder
2023-10-19 20:17:07 -07:00

113 lines
3.5 KiB
YAML

version: "3"
# Define a custom network for the services to communicate with each other
networks:
jenk_prom_graf_lab:
driver: bridge
# Define the services that will be run in the containers
services:
# Grafana service
grafana:
image: grafana/grafana:latest
container_name: grafana
volumes:
# Mount the Grafana plugins directory to the container
- /opt/docker/grafana/plugins:/var/lib/grafana/plugins
# Mount the Grafana data directory to the container
- grafana_data:/opt/docker/grafana/data
ports:
# Expose the Grafana service on port 3000
- 3000:3000
networks:
# Connect the Grafana service to the custom network
- jenk_prom_graf_lab
restart: unless-stopped
# Prometheus service
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
# Mount the Prometheus data directory to the container
- prometheus_data:/opt/docker/prometheus/data
# Mount the Prometheus configuration directory to the container
- /opt/docker/prometheus/data/config:/etc/prometheus
command:
# Specify the Prometheus configuration file
- '--config.file=/etc/prometheus/prometheus.yml'
# Specify the Prometheus data directory
- '--storage.tsdb.path=/opt/docker/prometheus/data/config'
# Specify the Prometheus console libraries directory
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
# Specify the Prometheus console templates directory
- '--web.console.templates=/usr/share/prometheus/consoles'
ports:
# Expose the Prometheus service on port 9090
- 9090:9090
networks:
# Connect the Prometheus service to the custom network
- jenk_prom_graf_lab
restart: unless-stopped
# InfluxDB service
influxdb:
image: influxdb:1.8.6-alpine
container_name: influxdb
volumes:
# Mount the InfluxDB data directory to the container
- influxdb_data:/opt/docker/influxdb/data
ports:
# Expose the InfluxDB service on port 8086
- 8086:8086
networks:
# Connect the InfluxDB service to the custom network
- jenk_prom_graf_lab
restart: unless-stopped
# Jenkins service
jenkins:
image: jenkins/jenkins:lts-jdk11
container_name: jenkins
volumes:
# Mount the Jenkins data directory to the container
- jenkins_data:/opt/docker/jenkins/data
# Mount the Jenkins plugins directory to the container
- /opt/docker/jenkins/plugins:/var/jenkins_home/plugins
ports:
# Expose the Jenkins service on port 8080
- 8080:8080
# Expose the Jenkins service on port 50000
- 50000:50000
networks:
# Connect the Jenkins service to the custom network
- jenk_prom_graf_lab
restart: unless-stopped
# Define the volumes that will be used by the services
volumes:
jenkins_data:
driver_opts:
# Mount the Jenkins data directory as a bind mount
type: none
device: /opt/docker/jenkins/data
o: bind
grafana_data:
driver_opts:
# Mount the Grafana data directory as a bind mount
type: none
device: /opt/docker/grafana/data
o: bind
influxdb_data:
driver_opts:
# Mount the InfluxDB data directory as a bind mount
type: none
device: /opt/docker/influxdb/data
o: bind
prometheus_data:
driver_opts:
# Mount the Prometheus data directory as a bind mount
type: none
device: /opt/docker/prometheus/data
o: bind