Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
277 changes: 97 additions & 180 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,190 +1,107 @@
version: '2.2'
version: '3.7'

services:
ceph-base:
image: ${CEPH_IMAGE:-rhcsdashboard/ceph-rpm:main}
volumes:
- ./docker/ceph:/docker:z
- ${CEPH_REPO_DIR}:/ceph
- ${CEPH_REPO_DIR}/src/python-common/ceph:/usr/lib/python3.6/site-packages/ceph
- ${CEPH_CUSTOM_BUILD_DIR:-empty_volume}:/ceph/build.custom
- ${HOST_CCACHE_DIR:-~/.ccache}:/root/.ccache
- ${NPM_DIR:-~/.npm}:/root/.npm
environment:
- ALERTMANAGER_HOST_PORT=${ALERTMANAGER_HOST_PORT}
- APPLITOOLS_API_KEY
- CEPH_DEBUG=${CEPH_DEBUG:-0}
- CEPH_PORT
- CEPH_REPO_DIR
- CHECK_MYPY=${CHECK_MYPY:-0}
- CYPRESS_CACHE_FOLDER=/ceph/build.cypress
- DASHBOARD_DEV_SERVER=${DASHBOARD_DEV_SERVER:-1}
- DASHBOARD_SSL=${DASHBOARD_SSL:-0}
- DASHBOARD_URL
- DOWNSTREAM_BUILD
- TEST_ORCHESTRATOR
- FS
- GRAFANA_HOST_PORT=${GRAFANA_HOST_PORT}
- MDS
- MGR
- MON
- MON_MAX_PG_PER_OSD
- NFS
- NG_CLI_ANALYTICS=false
- NODE_EXPORTER_HOST_PORT=${NODE_EXPORTER_HOST_PORT}
- OSD
- PROMETHEUS_HOST_PORT=${PROMETHEUS_HOST_PORT}
- PYTHONDONTWRITEBYTECODE=1
- RGW
- RGW_MULTISITE=${RGW_MULTISITE:-0}
- EXPORTER=${EXPORTER:-0}
- NVMEOF_GW=${NVMEOF_GW}
cap_add:
- ALL
entrypoint: /docker/entrypoint.sh
command: /docker/start.sh
cpus: ${CEPH_CONTAINER_CPUS:-4}
mem_limit: ${CEPH_CONTAINER_MEM_LIMIT:-6g}
scale: -1
ceph:
extends:
service: ceph-base
container_name: ceph
hostname: ceph
ports: ['${CEPH_PROXY_HOST_PORT:-4200}:4200','${CEPH_HOST_PORT:-11000}:11000']
scale: 1
ceph-base:
image: ${CEPH_IMAGE:-rhcsdashboard/ceph-rpm:main}
container_name: ceph-base
hostname: ceph-base
volumes:
- ./docker/ceph:/docker:Z
- ${CEPH_REPO_DIR}:/ceph:Z
- ${CEPH_REPO_DIR}/src/python-common/ceph:/usr/lib/python3.6/site-packages/ceph:Z
- ${CEPH_CUSTOM_BUILD_DIR:-empty_volume}:/ceph/build.custom:Z
- ${HOST_CCACHE_DIR:-~/.ccache}:/root/.ccache:Z
- ${NPM_DIR:-~/.npm}:/root/.npm:Z
environment:
- ALERTMANAGER_HOST_PORT=${ALERTMANAGER_HOST_PORT}
- CEPH_DEBUG=${CEPH_DEBUG:-0}
- DASHBOARD_DEV_SERVER=${DASHBOARD_DEV_SERVER:-1}
- DASHBOARD_SSL=${DASHBOARD_SSL:-0}
- PYTHONDONTWRITEBYTECODE=1
- RGW_MULTISITE=${RGW_MULTISITE:-0}
cap_add:
- ALL
entrypoint: /docker/entrypoint.sh
command: /docker/start.sh
deploy:
resources:
limits:
cpus: ${CEPH_CONTAINER_CPUS:-4}
memory: ${CEPH_CONTAINER_MEM_LIMIT:-6g}
healthcheck:
test: curl -f http://localhost:4200 || exit 1
interval: 30s
timeout: 10s
retries: 3

ceph-host2:
extends:
service: ceph-base
container_name: ceph-host2
hostname: ceph-host2
command: /docker/start-ceph-additional-host.sh
ceph:
extends:
service: ceph-base
container_name: ceph
hostname: ceph
ports:
- '${CEPH_PROXY_HOST_PORT:-4200}:4200'
- '${CEPH_HOST_PORT:-11000}:11000'
depends_on:
- alertmanager
- prometheus
- grafana

ceph2:
extends:
service: ceph-base
image: ${CEPH2_IMAGE:-rhcsdashboard/ceph-rpm:main}
container_name: ceph2
hostname: ceph2
ports: ['${CEPH2_PROXY_HOST_PORT:-4202}:4200','${CEPH2_HOST_PORT:-11002}:11000']
volumes:
- ${CEPH2_REPO_DIR}:/ceph
- ${CEPH2_CUSTOM_BUILD_DIR:-empty_volume}:/ceph/build.custom
grafana:
image: ${GRAFANA_IMAGE:-quay.io/ceph/ceph-grafana:9.4.7}
container_name: grafana
hostname: grafana
ports:
- '${GRAFANA_HOST_PORT:-3000}:3000'
volumes:
- grafana_data:/var/lib/grafana:Z
- ./docker/grafana/grafana.ini:/etc/grafana/grafana.ini:Z
- ./docker/grafana/provisioning:/etc/grafana/provisioning:Z
- ${CEPH_REPO_DIR}/${GRAFANA_DASHBOARDS_DIR:-monitoring/ceph-mixin/dashboards_out}:/etc/grafana/provisioning/dashboards/ceph:Z
environment:
- GF_SECURITY_ALLOW_EMBEDDING=true
healthcheck:
test: curl -f http://localhost:3000 || exit 1
interval: 30s
timeout: 10s
retries: 3

ceph-e2e:
extends:
service: ceph-base
image: ${CEPH_E2E_IMAGE:-rhcsdashboard/ceph-e2e:nautilus}
container_name: ceph-e2e
hostname: ceph-e2e
environment:
- DASHBOARD_URL=${DASHBOARD_URL:-https://ceph:11000}
- RUN_NPM_INSTALL=${RUN_NPM_INSTALL:-0}
entrypoint: ''
command: '/docker/e2e/e2e-run.sh'
prometheus:
image: ${PROMETHEUS_IMAGE:-prom/prometheus:v2.43.0}
container_name: prometheus
hostname: prometheus
ports:
- '${PROMETHEUS_HOST_PORT:-9090}:9090'
volumes:
- ./docker/prometheus:/etc/prometheus:Z
- ${CEPH_REPO_DIR}/${PROMETHEUS_ALERTS_DIR:-monitoring/ceph-mixin}:/etc/prometheus/alerts:Z
healthcheck:
test: curl -f http://localhost:9090 || exit 1
interval: 30s
timeout: 10s
retries: 3

ceph2-e2e:
extends:
service: ceph-e2e
image: ${CEPH2_E2E_IMAGE:-rhcsdashboard/ceph-e2e:nautilus}
container_name: ceph2-e2e
hostname: ceph2-e2e
volumes:
- ${CEPH2_REPO_DIR}:/ceph
environment:
- DASHBOARD_URL=${DASHBOARD_URL:-https://ceph2:11000}

grafana:
image: ${GRAFANA_IMAGE:-quay.io/ceph/ceph-grafana:9.4.7}
container_name: grafana
hostname: grafana
user: "0:0"
ports: ['${GRAFANA_HOST_PORT:-3000}:3000']
volumes:
- grafana_data:/var/lib/grafana
- ./docker/grafana/grafana.ini:/etc/grafana/grafana.ini:Z
- ./docker/grafana/provisioning:/etc/grafana/provisioning:Z
- ${CEPH_REPO_DIR}/${GRAFANA_DASHBOARDS_DIR:-monitoring/ceph-mixin/dashboards_out}:/etc/grafana/provisioning/dashboards/ceph:Z
environment:
- GF_SECURITY_ALLOW_EMBEDDING=true

prometheus:
image: ${PROMETHEUS_IMAGE:-prom/prometheus:v2.43.0}
container_name: prometheus
hostname: prometheus
ports: ['${PROMETHEUS_HOST_PORT:-9090}:9090']
volumes:
- ./docker/prometheus:/etc/prometheus:Z
- ${CEPH_REPO_DIR}/${PROMETHEUS_ALERTS_DIR:-monitoring/ceph-mixin}:/etc/prometheus/alerts:Z

prometheus2:
image: ${PROMETHEUS_IMAGE:-prom/prometheus:v2.43.0}
container_name: prometheus2
hostname: prometheus2
ports: ['${PROMETHEUS2_HOST_PORT:-9090}:9090']
volumes:
- ./docker/prometheus1:/etc/prometheus:Z
- ${CEPH2_REPO_DIR}/${PROMETHEUS_ALERTS_DIR:-monitoring/ceph-mixin}:/etc/prometheus/alerts:Z
scale: -1

node-exporter:
image: ${NODE_EXPORTER_IMAGE:-prom/node-exporter:v1.5.0}
container_name: node-exporter
hostname: node-exporter
ports: ['${NODE_EXPORTER_HOST_PORT:-9100}:9100']
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--no-collector.timex'

alertmanager:
image: ${ALERTMANAGER_IMAGE:-prom/alertmanager:v0.25.0}
container_name: alertmanager
hostname: alertmanager
ports: ['${ALERTMANAGER_HOST_PORT:-9093}:9093']
volumes:
- ./docker/alertmanager:/etc/alertmanager:Z
command:
- '--config.file=/etc/alertmanager/config.yml'

keycloak:
image: ${KEYCLOAK_IMAGE:-jboss/keycloak:11.0.3}
container_name: keycloak
hostname: keycloak
ports: ['${KEYCLOAK_HOST_HTTP_PORT:-8080}:8080', '${KEYCLOAK_HOST_HTTPS_PORT:-8443}:8443']
volumes:
- ./docker/keycloak:/docker:Z
environment:
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=keycloak
- KEYCLOAK_IMPORT=/docker/saml-demo-realm.json
- BIND=127.0.0.1
scale: -1

haproxy:
image: ${HAPROXY_IMAGE:-haproxy:2.3}
container_name: haproxy
hostname: haproxy
ports: ['${HAPROXY_HOST_HTTP_PORT:-80}:80', '${HAPROXY_HOST_HTTPS_PORT:-443}:443']
volumes:
- ./docker/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
- ./docker/haproxy/dashboard.pem:/etc/ssl/certs/dashboard.pem
- ./docker/haproxy/cors.lua:/etc/haproxy/cors.lua
scale: -1
alertmanager:
image: ${ALERTMANAGER_IMAGE:-prom/alertmanager:v0.25.0}
container_name: alertmanager
hostname: alertmanager
ports:
- '${ALERTMANAGER_HOST_PORT:-9093}:9093'
volumes:
- ./docker/alertmanager:/etc/alertmanager:Z
command:
- '--config.file=/etc/alertmanager/config.yml'
healthcheck:
test: curl -f http://localhost:9093 || exit 1
interval: 30s
timeout: 10s
retries: 3

volumes:
empty_volume:
grafana_data:
grafana_data:
empty_volume:

networks:
default:
driver: bridge
enable_ipv6: false
ipam:
driver: default
config:
- subnet: 172.20.0.0/24
- subnet: 2600:3c02:e000:0058::/64
default:
driver: bridge
enable_ipv6: false