diff --git a/docker-compose.yml b/docker-compose.yml index 4ce05af20c..887f35d512 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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