{"id":19876765,"url":"https://github.com/lewuathe/docker-trino-cluster","last_synced_at":"2025-10-18T10:34:34.103Z","repository":{"id":40295851,"uuid":"65067149","full_name":"Lewuathe/docker-trino-cluster","owner":"Lewuathe","description":"Multiple node presto cluster on docker container","archived":false,"fork":false,"pushed_at":"2022-07-08T12:29:01.000Z","size":13349,"stargazers_count":120,"open_issues_count":5,"forks_count":47,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-08-10T00:01:22.569Z","etag":null,"topics":["cluster","docker-container","docker-presto-cluster","presto","sql"],"latest_commit_sha":null,"homepage":null,"language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lewuathe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-06T05:44:04.000Z","updated_at":"2024-07-16T07:03:35.000Z","dependencies_parsed_at":"2022-08-09T16:38:19.858Z","dependency_job_id":null,"html_url":"https://github.com/Lewuathe/docker-trino-cluster","commit_stats":null,"previous_names":["lewuathe/docker-presto-cluster"],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lewuathe%2Fdocker-trino-cluster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lewuathe%2Fdocker-trino-cluster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lewuathe%2Fdocker-trino-cluster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lewuathe%2Fdocker-trino-cluster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lewuathe","download_url":"https://codeload.github.com/Lewuathe/docker-trino-cluster/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224309436,"owners_count":17290191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cluster","docker-container","docker-presto-cluster","presto","sql"],"created_at":"2024-11-12T16:34:16.231Z","updated_at":"2025-10-18T10:34:29.057Z","avatar_url":"https://github.com/Lewuathe.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-trino-cluster [![CircleCI](https://circleci.com/gh/Lewuathe/docker-trino-cluster.svg?style=svg)](https://circleci.com/gh/Lewuathe/docker-trino-cluster) ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/Lewuathe/docker-trino-cluster) ![GitHub](https://img.shields.io/github/license/Lewuathe/docker-trino-cluster)\n\ndocker-trino-cluster is a simple tool for launching multiple node [trino](https://trinosql.io/) cluster on docker container.\nThe image is synched with the master branch of [trino repository](https://github.com/trinosql/trino). Therefore you can try the latest trino for developing purpose easily.\n\n- [Features](#features)\n- [Images](#images)\n- [Usage](#usage)\n  * [docker-compose.yml](#docker-composeyml)\n- [Terraform](#terraform)\n- [Development](#development)\n  * [Build Image](#build-image)\n  * [Snapshot Image](#snapshot-image)\n- [LICENSE](#license)\n\n# Features\n\n- Multiple node cluster on docker container with docker-compose\n- Distribution of pre-build trino docker images\n- Override the catalog properties with custom one\n- Terraform module to launch ECS based cluster\n\n# Images\n\n|Role|Image|Pulls|Tags|\n|:---|:---|:---:|:---:|\n|coordinator|lewuathe/trino-coordinator|[![Docker Pulls](https://img.shields.io/docker/pulls/lewuathe/trino-coordinator.svg)](https://cloud.docker.com/u/lewuathe/repository/docker/lewuathe/trino-coordinator)|[tags](https://cloud.docker.com/repository/docker/lewuathe/trino-coordinator/tags)|\n|worker|lewuathe/trino-worker|[![Docker Pulls](https://img.shields.io/docker/pulls/lewuathe/trino-worker.svg)](https://cloud.docker.com/u/lewuathe/repository/docker/lewuathe/trino-worker)|[tags](https://cloud.docker.com/repository/docker/lewuathe/trino-worker/tags)|\n\nWe are also providing ARM based images. Images for ARM have suffix `-arm64v8` in the tag. For instance, the image of 336 has two types of images supporting multi-architectures. Following architectures are supported for now.\n\n- `linux/amd64`\n- `linux/arm64/v8`\n\n# Usage\n\nImages are uploaded in [DockerHub](https://hub.docker.com/). These images are build with the corresponding version of trino. Image tagged with 306 uses trino 306 inside. Each docker image gets two arguments\n\n|Index|Argument|Description|\n|:---|:---|:---|\n|1|discovery_uri| Required parameter to specify the URI to coordinator host|\n|2|node_id|Optional parameter to specify the node identity. UUID will be generated if not given|\n\nYou can launch multi node trino cluster in the local machine as follows.\n\n```sh\n# Create a custom network\n$ docker network create trino_network\n\n# Launch coordinator\n$ docker run -p 8080:8080 -it \\\n    --net trino_network \\\n    --name coordinator \\\n    lewuathe/trino-coordinator:330-SNAPSHOT http://localhost:8080\n\n# Launch two workers\n$ docker run -it \\\n    --net trino_network \\\n    --name worker1 \\\n    lewuathe/trino-worker:330-SNAPSHOT http://coordinator:8080\n\n$ docker run -it \\\n    --net trino_network \\\n    --name worker2 \\\n    lewuathe/trino-worker:330-SNAPSHOT http://coordinator:8080\n```\n\n\n## docker-compose.yml\n\n[`docker-compose`](https://docs.docker.com/compose/compose-file/) enables us to coordinator multiple containers more easily. You can launch a multiple node docker trino cluster with the following yaml file. `command` is required to pass discovery URI and node id information which must be unique in a cluster. If node ID is not passed, the UUID is generated automatically at launch time.\n\n```yaml\nversion: '3'\n\nservices:\n  coordinator:\n    image: \"lewuathe/trino-coordinator:${trino_VERSION}\"\n    ports:\n      - \"8080:8080\"\n    container_name: \"coordinator\"\n    command: http://coordinator:8080 coordinator\n  worker0:\n    image: \"lewuathe/trino-worker:${trino_VERSION}\"\n    container_name: \"worker0\"\n    ports:\n      - \"8081:8081\"\n    command: http://coordinator:8080 worker0\n  worker1:\n    image: \"lewuathe/trino-worker:${trino_VERSION}\"\n    container_name: \"worker1\"\n    ports:\n      - \"8082:8081\"\n    command: http://coordinator:8080 worker1\n```\n\nThe version can be specified as the environment variable.\n\n```\n$ trino_VERSION=330-SNAPSHOT docker-compose up\n```\n\n# Custom Catalogs\n\nWhile the image provides several default connectors (i.e. JMX, Memory, TPC-H and TPC-DS), you may want to override the catalog property with your own ones. That can be easily achieved by mounting the catalog directory onto `/usr/local/trino/etc/catalog`. Please look at [`volumes`](https://docs.docker.com/compose/compose-file/#volumes) configuration for docker-compose.\n\n```yaml\nservices:\n  coordinator:\n    image: \"lewuathe/trino-coordinator:${trino_VERSION}\"\n    ports:\n      - \"8080:8080\"\n    container_name: \"coordinator\"\n    command: http://coordinator:8080 coordinator\n    volumes:\n      - ./example/etc/catalog:/usr/local/trino/etc/catalog\n```\n\n# Terraform\n\nYou can launch trino cluster on AWS Fargate by using [`terraform-aws-trino` module](https://github.com/Lewuathe/terraform-aws-trino). The following Terraform configuration provides a trino cluster with 2 worker processes on Fargate.\n\n```\nmodule \"trino\" {\n  source           = \"github.com/Lewuathe/terraform-aws-trino\"\n  cluster_capacity = 2\n}\n\noutput \"alb_dns_name\" {\n  value = module.trino.alb_dns_name\n}\n```\n\nPlease see [here](https://github.com/Lewuathe/terraform-aws-trino) for more detail.\n\n\n# Development\n\n## Build Image\n\n```\n$ make build\n```\n\n## Snapshot Image\n\nYou may want to build the trino with your own build package for the development of trino itself.\n\n```\n$ cp /path/to/trino/trino-server/target/trino-server-330-SNAPSHOT.tar.gz /path/to/docker-trino-cluster/trino-base/\n$ make snapshot\n```\n\n# LICENSE\n\n[Apache v2 License](https://github.com/Lewuathe/docker-trino-cluster/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flewuathe%2Fdocker-trino-cluster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flewuathe%2Fdocker-trino-cluster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flewuathe%2Fdocker-trino-cluster/lists"}