version: "3"

services:
  op-db:
    image: postgres:14-alpine
    restart: always
    volumes:
      - ./docker/data/op-db-data:/var/lib/postgresql/data
    ports:
      - 5432:5432
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

  op-kv:
    image: redis:7.2.5-alpine
    restart: always
    volumes:
      - ./docker/data/op-kv-data:/data
    command: ["redis-server", "--maxmemory-policy", "noeviction"]
    ports:
      - 6379:6379

  op-ch:
    image: clickhouse/clickhouse-server:26.1.3.52
    restart: always
    volumes:
      - ./docker/data/op-ch-data:/var/lib/clickhouse
      - ./docker/clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/op-config.xml
      - ./docker/clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/op-user-config.xml
      - ./docker/clickhouse/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
    environment:
      CLICKHOUSE_DB: openpanel
      CLICKHOUSE_SKIP_USER_SETUP: 1
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    ports:
      - "8123:8123" # HTTP interface
      - "9000:9000" # Native/TCP interface
      - "9009:9009" # Inter-server communication
