{"id":22488771,"url":"https://github.com/temporalio/docker-compose","last_synced_at":"2025-10-18T01:13:23.343Z","repository":{"id":37634458,"uuid":"328026846","full_name":"temporalio/docker-compose","owner":"temporalio","description":"Temporal docker-compose files","archived":false,"fork":false,"pushed_at":"2024-11-06T02:00:26.000Z","size":232,"stargazers_count":318,"open_issues_count":4,"forks_count":204,"subscribers_count":21,"default_branch":"main","last_synced_at":"2024-11-06T02:41:12.032Z","etag":null,"topics":["docker-compose","temporal-server"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/temporalio.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-08T22:32:58.000Z","updated_at":"2024-11-06T01:58:29.000Z","dependencies_parsed_at":"2023-12-21T18:41:23.600Z","dependency_job_id":"db34dc9c-121c-458a-aaff-8c5a04d351bc","html_url":"https://github.com/temporalio/docker-compose","commit_stats":null,"previous_names":[],"tags_count":53,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/temporalio%2Fdocker-compose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/temporalio%2Fdocker-compose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/temporalio%2Fdocker-compose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/temporalio%2Fdocker-compose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/temporalio","download_url":"https://codeload.github.com/temporalio/docker-compose/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228500220,"owners_count":17930019,"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":["docker-compose","temporal-server"],"created_at":"2024-12-06T17:18:42.196Z","updated_at":"2025-10-18T01:13:18.307Z","avatar_url":"https://github.com/temporalio.png","language":"Shell","readme":"# Temporal Server docker-compose files\n\nThis repository provides docker-compose files that enable you to run a local instance of the Temporal Server.\nThere are a variety of docker-compose files, each utilizing a different set of dependencies.\nEvery major or minor release of the Temporal Server has a corresponding docker-compose release.\n\n## Prerequisites\n\nTo use these files, you must first have the following installed:\n\n- [Docker](https://docs.docker.com/engine/installation/)\n- [docker-compose](https://docs.docker.com/compose/install/)\n\n## How to use\n\nThe following steps will run a local instance of the Temporal Server using the default configuration file (`docker-compose.yml`):\n\n1. Clone this repository.\n2. Change directory into the root of the project.\n3. Run the `docker-compose up` command.\n\n```bash\ngit clone https://github.com/temporalio/docker-compose.git\ncd  docker-compose\ndocker-compose up\n```\n\n\u003e ⚠️ If you are on an M1 Mac, note that Temporal v1.12 to v1.14 had fatal issues with ARM builds. v1.14.2 onwards should be fine for M1 Macs.\n\nAfter the Server has started, you can open the Temporal Web UI in your browser: [http://localhost:8080](http://localhost:8080).\n\nYou can also interact with the Server using a preconfigured CLI (tctl).\nFirst create an alias for `tctl`:\n\n```bash\nalias tctl=\"docker exec temporal-admin-tools tctl\"\n```\n\nThe following is an example of how to register a new namespace `test-namespace` with 1 day of retention:\n\n```bash\ntctl --ns test-namespace namespace register -rd 1\n```\n\nYou can find our `tctl` docs on [docs.temporal.io](https://docs.temporal.io/docs/system-tools/tctl/).\n\nGet started building Workflows with a [Go sample](https://github.com/temporalio/samples-go), [Java sample](https://github.com/temporalio/samples-java), or write your own using one of the [SDKs](https://docs.temporal.io/docs/sdks-introduction).\n\n### Other configuration files\n\nThe default configuration file (`docker-compose.yml`) uses a PostgreSQL database, an Elasticsearch instance, and exposes the Temporal gRPC Frontend on port 7233.\nThe other configuration files in the repo spin up instances of the Temporal Server using different databases and dependencies.\nFor example you can run the Temporal Server with MySQL and Elastic Search with this command:\n\n```bash\ndocker-compose -f docker-compose-mysql-es.yml up\n```\n\nHere is a list of available files and the dependencies they use.\n\n| File                                   | Description                                                   |\n|----------------------------------------|---------------------------------------------------------------|\n| docker-compose.yml                     | PostgreSQL and Elasticsearch (default)                        |\n| docker-compose-tls.yml                 | PostgreSQL and Elasticsearch with TLS                         |\n| docker-compose-postgres.yml            | PostgreSQL                                                    |\n| docker-compose-cass-es.yml             | Cassandra and Elasticsearch                                   |\n| docker-compose-mysql.yml               | MySQL                                                         |\n| docker-compose-mysql-es.yml            | MySQL and Elasticsearch                                       |\n| docker-compose-postgres-opensearch.yml | PostgreSQL and OpenSearch                                     |\n| docker-compose-multirole.yml           | PostgreSQL and Elasticsearch with mult-role Server containers |\n\n### Using multi-role configuration\n\nFirst install the loki plugin (this is one time operation)\n```bash\ndocker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions\n```\n\nStart multi-role Server configuration:\n```\ndocker compose -f docker-compose-multirole.yaml up\n```\n\nSome exposed endpoints:\n- http://localhost:8080 - Temporal Web UI\n- http://localhost:8085 - Grafana dashboards\n- http://localhost:9090 - Prometheus UI\n- http://localhost:9090/targets - Prometheus targets\n- http://localhost:8000/metrics - Server metrics\n\n### Using the web interface\n\n`docker-compose.yml` includes the Temporal Web UI.\n\nIf you run command:\n\n```bash\ndocker-compose up\n```\n\nYou access the Temporal Web UI at http://localhost:8080.\n\n### Enabling metrics (with Grafana and Prometheus)\n\nWe maintain two example docker-compose setups with server metrics enabled, and Prometheus and Grafana with [our Server and SDK dashboards](https://github.com/temporalio/dashboards):\n\n- https://github.com/tsurdilo/my-temporal-dockercompose\n- https://github.com/temporalio/background-checks\n\n### Use a custom image configuration\n\nIf you want, you can even use a custom Docker image of the Temporal Server.\n\nClone the main Temporal Server repo: [https://github.com/temporalio/temporal](https://github.com/temporalio/temporal):\n\n```bash\ngit clone https://github.com/temporalio/temporal.git\n```\n\nIn the following command, replace **\u003cYOUR_TAG\u003e** and **\u003cYOUR_COMMIT\u003e** to build the custom Docker image:\n\n```bash\ngit checkout \u003cYOUR_COMMIT\u003e\ndocker build . -t temporalio/auto-setup:\u003cYOUR_TAG\u003e --build-arg TARGET=auto-setup\n```\n\nNext, in the `docker-compose.yml` file, replace the `services.temporal.image` configuration value with **\u003cYOUR_TAG\u003e**.\n\nThen run the `docker-compose up` command:\n\n```bash\ndocker-compose up\n```\n\n## Using Temporal docker images in production\n\nThese docker-compose setups listed here do not use Temporal Server directly - they utilize [an `auto-setup` script you can read about here](https://docs.temporal.io/blog/auto-setup). You will want to familiarize yourself with this before you deploy to production.\n\nIn a typical production setting, dependencies such as `cassandra` or `elasticsearch` are managed/started independently of the Temporal server. **You should use the `temporalio/server` image instead of `temporalio/auto-setup`.**\n\nTo use the `temporalio/server` container in a production setting, use the following command:\n\n```plain\ndocker run -e CASSANDRA_SEEDS=10.x.x.x                  -- csv of Cassandra server ipaddrs\n    -e KEYSPACE=\u003ckeyspace\u003e                              -- Cassandra keyspace\n    -e VISIBILITY_KEYSPACE=\u003cvisibility_keyspace\u003e        -- Cassandra visibility keyspace\n    -e SKIP_SCHEMA_SETUP=true                           -- do not setup Cassandra schema during startup\n    -e NUM_HISTORY_SHARDS=1024  \\                       -- Number of history shards\n    -e SERVICES=history,matching \\                      -- Spin-up only the provided services\n    -e LOG_LEVEL=debug,info \\                           -- Logging level\n    -e DYNAMIC_CONFIG_FILE_PATH=config/foo.yaml         -- Dynamic config file to be watched\n    temporalio/server:\u003ctag\u003e\n```\n\n","funding_links":[],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftemporalio%2Fdocker-compose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftemporalio%2Fdocker-compose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftemporalio%2Fdocker-compose/lists"}