infra Docker & Self-Hosted Deployment

GitHub

The runtime behind every E2B stack: Cloud, Enterprise, and your own machine.

1,768 stars Go Go 24 files ยท ~67,582 tokens #ai-agents#code-interpreter#consul#devtools#firecracker#gcp#go#golang
RAW Compose
1. Pull Image (DOCKERHUB) docker pull clickhouse/clickhouse-server
2. Docker Run (1-Click Launch) docker run -d --name infra -p 8123:8123 --restart always clickhouse/clickhouse-server:25.8.30.16
3. Podman Run podman run -d --name infra -p 8123:8123 --restart always clickhouse/clickhouse-server:25.8.30.16
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/clickhouse/clickhouse-server:25.8.30.16
5. ORAS Pull (OCI Artifact) oras pull clickhouse/clickhouse-server:25.8.30.16
6. Compose Deployment docker compose up -d
packages/local-dev/docker-compose.yaml
Download .yml
services:
  clickhouse:
    image: "clickhouse/clickhouse-server:25.8.30.16"
    environment:
      CLICKHOUSE_DB: default
      CLICKHOUSE_USER: clickhouse
      CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: '1'
      CLICKHOUSE_PASSWORD: clickhouse
    ports:
      - "8123:8123"
      - "9000:9000"
    volumes:
      - clickhouse:/var/lib/clickhouse
      - ./clickhouse-config-generated.xml:/etc/clickhouse-server/config.d/config.xml:z

  grafana:
    image: grafana/grafana:12.0.0
    volumes:
      - ./grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml:z
    environment:
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
      - GF_AUTH_DISABLE_LOGIN_FORM=true
      - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor metricsSummary
      - GF_INSTALL_PLUGINS=https://storage.googleapis.com/integration-artifacts/grafana-exploretraces-app/grafana-exploretraces-app-latest.zip;grafana-traces-app
    ports:
      - "53000:3000"

  loki:
    image: grafana/loki:3.4.1
    command: -config.file=/etc/loki/local-config.yaml
    ports:
      - "3100:3100"
    healthcheck:
      test: wget --quiet --tries=1 --output-document=- http://localhost:3100/ready | grep -q -w ready || exit 1
      start_period: 20s
      interval: 10s
      timeout: 1s
      retries: 12  # try for 2 minutes

  memcached:
    image: memcached:1.6.38
    container_name: memcached
    ports:
      - "11211:11211"
    environment:
      - MEMCACHED_MAX_MEMORY=64m # Set the maximum memory usage
      - MEMCACHED_THREADS=4 # Number of threads to use

  mimir:
    image: grafana/mimir:2.17.1
    command: -config.file=/etc/mimir/mimir.yaml
    volumes:
      - ./mimir.yaml:/etc/mimir/mimir.yaml:z

  otel-collector:
    image: otel/opentelemetry-collector-contrib:0.146.0
    volumes:
      - ./otel-collector.yaml:/etc/otelcol-contrib/config.yaml:z
    ports:
      - "4317:4317" # OTLP gRPC receiver
      - "4318:4318" # OTLP HTTP receiver"

  postgres:
    image: postgres:18-alpine
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: postgres
      PGDATA: /var/lib/postgresql/18/docker
    ports:
      - "5432:5432"
    volumes:
      - postgres:/var/lib/postgresql

  redis:
    image: redis:7.4.6
    ports:
      - "6379:6379"

  socks5:
    image: python:3.12-alpine
    command: >-
      sh -c "pip install --quiet pproxy &&
      exec python -u -m pproxy
      -l socks5://0.0.0.0:1080#byopuser:byoppass
      -v"
    ports:
      - "1080:1080"

  tempo:
    image: grafana/tempo:2.8.2
    command: [ "-config.file=/etc/tempo.yaml" ]
    volumes:
      - ./tempo.yaml:/etc/tempo.yaml:z
      - tempo:/var/tempo
    ports:
      - "3200"
    depends_on:
      - tempo-init
      - memcached

  # Tempo runs as user 10001, and docker compose creates the volume as root.
  # As such, we need to chown the volume in order for Tempo to start correctly.
  tempo-init:
    image: bash
    user: root
    entrypoint:
      - "chown"
      - "10001:10001"
      - "/var/tempo"
    volumes:
      - tempo:/var/tempo

  vector:
    image: timberio/vector:0.51.X-alpine
    depends_on:
      - loki
    environment:
      VECTOR_CONFIG: "/etc/vector.toml"
      VECTOR_LOG: "warn"
    ports:
      - "30006:30006"
    volumes:
      - ./vector.toml:/etc/vector.toml:z


volumes:
  clickhouse: { }
  postgres: { }
  tempo: { }