truss-image 0.4.0

Image toolkit with a shared Rust core across the CLI, HTTP server, and WASM demo.
Documentation
services:
  truss:
    build: .
    ports:
      - "8080:8080"
    environment:
      - TRUSS_BEARER_TOKEN=changeme
      - TRUSS_STORAGE_ROOT=/data
      - TRUSS_BIND_ADDR=0.0.0.0:8080
      # - TRUSS_MAX_CONCURRENT_TRANSFORMS=64
      # - TRUSS_TRANSFORM_DEADLINE_SECS=30
    volumes:
      - ./images:/data:ro
    read_only: true
    security_opt:
      - no-new-privileges:true

  # ── S3 / MinIO example (uncomment to use) ──
  # minio:
  #   image: minio/minio:latest
  #   command: ["server", "/data"]
  #   environment:
  #     MINIO_ROOT_USER: minioadmin
  #     MINIO_ROOT_PASSWORD: minioadmin
  #   healthcheck:
  #     test: ["CMD", "mc", "ready", "local"]
  #     interval: 5s
  #     timeout: 3s
  #     retries: 10
  #
  # truss-s3:
  #   build: .
  #   ports:
  #     - "8083:8080"
  #   environment:
  #     - TRUSS_BEARER_TOKEN=changeme
  #     - TRUSS_BIND_ADDR=0.0.0.0:8080
  #     - TRUSS_STORAGE_BACKEND=s3
  #     - TRUSS_S3_BUCKET=my-bucket
  #     - TRUSS_S3_FORCE_PATH_STYLE=true
  #     - AWS_ACCESS_KEY_ID=minioadmin
  #     - AWS_SECRET_ACCESS_KEY=minioadmin
  #     - AWS_REGION=us-east-1
  #     - AWS_ENDPOINT_URL=http://minio:9000
  #   read_only: true
  #   security_opt:
  #     - no-new-privileges:true

  # ── GCS example (uncomment to use) ──
  # fake-gcs:
  #   image: fsouza/fake-gcs-server:latest
  #   command: ["-scheme", "http", "-port", "4443"]
  #   healthcheck:
  #     test: ["CMD", "nc", "-z", "localhost", "4443"]
  #     interval: 5s
  #     timeout: 3s
  #     retries: 10
  #
  # truss-gcs:
  #   build: .
  #   ports:
  #     - "8081:8080"
  #   environment:
  #     - TRUSS_BEARER_TOKEN=changeme
  #     - TRUSS_BIND_ADDR=0.0.0.0:8080
  #     - TRUSS_STORAGE_BACKEND=gcs
  #     - TRUSS_GCS_BUCKET=my-bucket
  #     - TRUSS_GCS_ENDPOINT=http://fake-gcs:4443
  #     - GOOGLE_APPLICATION_CREDENTIALS_JSON={}
  #   read_only: true
  #   security_opt:
  #     - no-new-privileges:true

  # ── Azure Blob Storage example (uncomment to use) ──
  # azurite:
  #   image: mcr.microsoft.com/azure-storage/azurite:latest
  #   command: ["azurite-blob", "--blobHost", "0.0.0.0", "--blobPort", "10000"]
  #   healthcheck:
  #     test: ["CMD", "nc", "-z", "localhost", "10000"]
  #     interval: 5s
  #     timeout: 3s
  #     retries: 10
  #
  # truss-azure:
  #   build: .
  #   ports:
  #     - "8082:8080"
  #   depends_on:
  #     azurite:
  #       condition: service_healthy
  #   environment:
  #     - TRUSS_BEARER_TOKEN=changeme
  #     - TRUSS_BIND_ADDR=0.0.0.0:8080
  #     - TRUSS_STORAGE_BACKEND=azure
  #     - TRUSS_AZURE_CONTAINER=truss-test
  #     - TRUSS_AZURE_ENDPOINT=http://azurite:10000/devstoreaccount1
  #     - AZURE_STORAGE_ACCOUNT_NAME=devstoreaccount1
  #   read_only: true
  #   security_opt:
  #     - no-new-privileges:true