--- version: '2' services: # To test with MariaDB, set FLEET_MYSQL_IMAGE to mariadb:10.6 or the like. mysql: image: ${FLEET_MYSQL_IMAGE:-mysql:5.7} platform: linux/x86_64 volumes: - mysql-persistent-volume:/tmp command: mysqld --datadir=/tmp/mysqldata --event-scheduler=ON environment: &mysql-default-environment MYSQL_ROOT_PASSWORD: toor MYSQL_DATABASE: fleet MYSQL_USER: fleet MYSQL_PASSWORD: insecure ports: - "3306:3306" mysql_test: image: ${FLEET_MYSQL_IMAGE:-mysql:5.7} platform: linux/x86_64 # innodb-file-per-table=OFF gives ~20% speedup for test runs. command: mysqld --datadir=/tmpfs --slow_query_log=1 --log_output=TABLE --log-queries-not-using-indexes --event-scheduler=ON --innodb-file-per-table=OFF environment: *mysql-default-environment ports: - "3307:3306" tmpfs: - /var/lib/mysql:rw,noexec,nosuid - /tmpfs mailhog: image: mailhog/mailhog:latest ports: - "8025:8025" - "1025:1025" redis: image: redis:5 ports: - "6379:6379" redis-cluster-setup: image: redis:5 command: redis-cli --cluster create 172.20.0.31:7001 172.20.0.32:7002 172.20.0.33:7003 --cluster-yes networks: cluster_network: ipv4_address: 172.20.0.30 depends_on: - redis-cluster-1 - redis-cluster-2 - redis-cluster-3 redis-cluster-1: image: redis:5 command: redis-server /usr/local/etc/redis/redis.conf ports: - '7001:7001' volumes: - ./tools/redis-tests/redis-cluster-1.conf:/usr/local/etc/redis/redis.conf networks: cluster_network: ipv4_address: 172.20.0.31 redis-cluster-2: image: redis:5 command: redis-server /usr/local/etc/redis/redis.conf ports: - '7002:7002' volumes: - ./tools/redis-tests/redis-cluster-2.conf:/usr/local/etc/redis/redis.conf networks: cluster_network: ipv4_address: 172.20.0.32 redis-cluster-3: image: redis:5 command: redis-server /usr/local/etc/redis/redis.conf ports: - '7003:7003' volumes: - ./tools/redis-tests/redis-cluster-3.conf:/usr/local/etc/redis/redis.conf networks: cluster_network: ipv4_address: 172.20.0.33 saml_idp: image: fleetdm/docker-idp:latest environment: SIMPLESAMLPHP_SP_ENTITY_ID: 'https://localhost:8080' SIMPLESAMLPHP_SP_ASSERTION_CONSUMER_SERVICE: 'https://localhost:8080/api/v1/fleet/sso/callback' volumes: - ./tools/saml/users.php:/var/www/simplesamlphp/config/authsources.php ports: - "9080:8080" - "9443:8443" # CAdvisor container allows monitoring other containers. Useful for # development. cadvisor: image: google/cadvisor:latest ports: - "5678:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro prometheus: image: prom/prometheus:latest ports: - "9090:9090" volumes: - ./tools/app/prometheus.yml:/etc/prometheus/prometheus.yml # localstack to simulate AWS integrations like firehose & kinesis # use http://localhost:4566 as the `--endpoint-url` argument in awscli localstack: image: localstack/localstack ports: - "4566:4566" - "4571:4571" environment: - SERVICES=firehose,kinesis volumes: mysql-persistent-volume: networks: cluster_network: driver: bridge ipam: config: - subnet: 172.20.0.0/24