blob: 10951cf6cb7c04fef27e51b6033efdb22420bf00 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
---
services:
redis:
image: redis:5.0.1
labels:
org.apache.airflow.breeze: "true"
org.apache.airflow.breeze.worktree: "${BREEZE_WORKTREE_PATH:-}"
breeze.description: "Integration required for Redis tests."
volumes:
- redis-db-volume:/data/redis
ports:
- "${REDIS_HOST_PORT}:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 30s
start_period: 30s
start_interval: 1s
retries: 50
restart: "on-failure"
redis-cluster:
image: redis:7-alpine
labels:
org.apache.airflow.breeze: "true"
org.apache.airflow.breeze.worktree: "${BREEZE_WORKTREE_PATH:-}"
breeze.description: "Integration required for Redis cluster mode tests."
# All three masters share one network namespace so the cluster can be formed without
# inter-container discovery. The cluster is created against the container's own IP rather
# than 127.0.0.1: nodes record the address they are created with and hand it back in
# CLUSTER SLOTS, and a client in another container cannot follow a 127.0.0.1 redirect.
command:
- sh
- -c
- |
set -e
ip=$$(hostname -i | awk '{print $$1}')
for port in 7001 7002 7003; do
redis-server --port $$port --bind 0.0.0.0 --protected-mode no \
--cluster-enabled yes --cluster-config-file nodes-$$port.conf \
--cluster-node-timeout 5000 --appendonly no --daemonize yes
done
until redis-cli -p 7003 ping > /dev/null 2>&1; do sleep 1; done
redis-cli --cluster create $$ip:7001 $$ip:7002 $$ip:7003 --cluster-yes
sleep infinity
healthcheck:
test: ["CMD-SHELL", "redis-cli -p 7001 cluster info | grep -q cluster_state:ok"]
interval: 5s
timeout: 30s
start_period: 30s
start_interval: 1s
retries: 50
restart: "on-failure"
airflow:
environment:
- INTEGRATION_REDIS=true
depends_on:
redis:
condition: service_healthy
redis-cluster:
condition: service_healthy
volumes:
redis-db-volume:
labels:
org.apache.airflow.breeze: "true"
org.apache.airflow.breeze.worktree: "${BREEZE_WORKTREE_PATH:-}"