rs-zero 0.2.8

Rust-first microservice framework inspired by go-zero engineering practices
Documentation
services:
  etcd:
    image: quay.io/coreos/etcd:v3.5.15
    command:
      - /usr/local/bin/etcd
      - --advertise-client-urls=http://0.0.0.0:2379
      - --listen-client-urls=http://0.0.0.0:2379
    ports:
      - "${RS_ZERO_EXTERNAL_ETCD_PORT:-12379}:2379"
    healthcheck:
      test: ["CMD", "etcdctl", "--endpoints=http://127.0.0.1:2379", "endpoint", "health"]
      interval: 2s
      timeout: 3s
      retries: 30

  redis:
    image: redis:7-alpine
    ports:
      - "${RS_ZERO_EXTERNAL_REDIS_PORT:-16379}:6379"
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 2s
      timeout: 3s
      retries: 30

  otel-collector:
    image: otel/opentelemetry-collector:0.104.0
    command: ["--config=/etc/otelcol/config.yml"]
    volumes:
      - ./otel-collector-config.yml:/etc/otelcol/config.yml:ro
    ports:
      - "${RS_ZERO_EXTERNAL_OTLP_GRPC_PORT:-14317}:4317"
      - "${RS_ZERO_EXTERNAL_OTLP_HTTP_PORT:-14318}:4318"
      - "${RS_ZERO_EXTERNAL_OTLP_HEALTH_PORT:-13133}:13133"
    healthcheck:
      test: ["CMD", "/otelcol", "--version"]
      interval: 2s
      timeout: 3s
      retries: 30

  pyroscope:
    image: grafana/pyroscope:1.14.0
    command: ["server"]
    ports:
      - "${RS_ZERO_EXTERNAL_PYROSCOPE_PORT:-14040}:4040"
    healthcheck:
      test: ["CMD", "/usr/bin/pyroscope", "--version"]
      interval: 2s
      timeout: 3s
      retries: 60

  mysql:
    image: mysql:8.4
    environment:
      MYSQL_DATABASE: rs_zero
      MYSQL_USER: rs_zero
      MYSQL_PASSWORD: rs_zero
      MYSQL_ROOT_PASSWORD: rs_zero_root
    ports:
      - "${RS_ZERO_EXTERNAL_MYSQL_PORT:-13306}:3306"
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -urs_zero -prs_zero --silent"]
      interval: 3s
      timeout: 5s
      retries: 60

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: rs_zero
      POSTGRES_USER: rs_zero
      POSTGRES_PASSWORD: rs_zero
    ports:
      - "${RS_ZERO_EXTERNAL_POSTGRES_PORT:-15432}:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U rs_zero -d rs_zero -h 127.0.0.1"]
      interval: 2s
      timeout: 3s
      retries: 60