# 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.

# Standalone IoTDB for integration tests (simplest topology).
# Usage: docker compose up -d && cargo test
# For a 1C1D cluster topology, see docker-compose-1c1d.yml.

services:
  iotdb:
    image: apache/iotdb:2.0.6-standalone
    container_name: iotdb-rust-standalone
    restart: unless-stopped
    ports:
      - "6667:6667"
    environment:
      - IOTDB_JMX_OPTS=-Xms4G -Xmx4G -XX:MaxDirectMemorySize=1G
      - CONFIGNODE_JMX_OPTS=-Xms512M -Xmx512M -XX:MaxDirectMemorySize=128M
    healthcheck:
      test: ["CMD", "ls", "/iotdb/data/datanode/system"]
      interval: 5s
      timeout: 10s
      retries: 30
      start_period: 20s
