Temporal Server docker-compose files
This repository provides docker-compose files that enable you to run a local instance of the Temporal Server.
There are a variety of docker-compose files, each utilizing a different set of dependencies.
Every major or minor release of the Temporal Server has a corresponding docker-compose release.
Prerequisites
To use these files, you must first have the following installed:
How to use
The following steps will run a local instance of the Temporal Server using the default configuration file (docker-compose.yml):
- Clone this repository.
- Change directory into the root of the project.
- Run the
docker-compose upcommand.
git clone https://github.com/temporalio/docker-compose.git
cd docker-compose
docker-compose upAfter the Server has started, you can open the Temporal Web UI in your browser: http://localhost:8088.
You can also interact with the Server using a preconfigured CLI (tctl).
First create an alias for tctl:
alias tctl="docker exec temporal-admin-tools tctl"The following is an example of how to register a new namespace test-namespace with 1 day of retention:
tctl --ns test-namespace namespace register -rd 1Get started building Workflows with a Go sample, Java sample, or write your own using one of the SDKs.
Other configuration files
The default configuration file (docker-compose.yml) uses a Cassandra database and exposes the Temporal gRPC Frontend on port 7233.
The other configuration files in the repo spin up instances of the Temporal Server using different databases and dependencies.
For example you can run the Temporal Server with MySQL and Elastic Search with this command:
docker-compose -f docker-compose-mysql-es.yml upHere is a list of available files and the dependencies they use.
| File | Description |
|---|---|
| docker-compose.yml | Cassandra (default) |
| docker-compose-cas-es.yml | Cassandra and Elasticsearch |
| docker-compose-mysql.yml | MySQL |
| docker-compose-mysql-es.yml | MySQL and Elasticsearch |
| docker-compose-postgres.yml | PostgreSQL |
| docker-compose-cockroach.yml | CockroachDB |
Use a custom image configuration
If you want, you can even use a custom Docker image of the Temporal Server.
Clone the main Temporal Server repo: https://github.com/temporalio/temporal:
git clone https://github.com/temporalio/temporal.gitIn the following command, replace <YOUR_TAG> and <YOUR_COMMIT> to build the custom Docker image:
git checkout <YOUR_COMMIT>
docker build . -t temporalio/auto-setup:<YOUR_TAG> --build-arg TARGET=auto-setupNext, in the docker-compose.yml file, replace the services.temporal.image configuration value with <YOUR_TAG>.
Then run the docker-compose up command:
docker-compose upQuickstart for production
In a typical production setting, dependencies such as cassandra or elasticsearch are managed/started independently of the Temporal server.
To use the container in a production setting, use the following command:
docker run -e CASSANDRA_SEEDS=10.x.x.x -- csv of Cassandra server ipaddrs
-e KEYSPACE=<keyspace> -- Cassandra keyspace
-e VISIBILITY_KEYSPACE=<visibility_keyspace> -- Cassandra visibility keyspace
-e SKIP_SCHEMA_SETUP=true -- do not setup Cassandra schema during startup
-e RINGPOP_SEEDS=10.x.x.x,10.x.x.x \ -- csv of ipaddrs for gossip bootstrap
-e NUM_HISTORY_SHARDS=1024 \ -- Number of history shards
-e SERVICES=history,matching \ -- Spin-up only the provided services
-e LOG_LEVEL=debug,info \ -- Logging level
-e DYNAMIC_CONFIG_FILE_PATH=config/foo.yaml -- Dynamic config file to be watched
temporalio/server:<tag>