Skip to main content
This guide covers deploying Temporal Server using Docker, from local development setups to production-ready containerized deployments.

Quick Start

The fastest way to get Temporal running locally:
This starts a server with in-memory SQLite storage suitable for development.

Docker Image

Temporal provides official Docker images:

Image Details

The server image is based on Alpine Linux and includes:
  • temporal-server binary in /usr/local/bin/
  • Entrypoint script at /etc/temporal/entrypoint.sh
  • Non-root user temporal (UID 1000, GID 1000)

Docker Compose Setup

Development Environment

For local development with all dependencies:
1

Create docker-compose.yml

docker-compose.yml
2

Create MySQL initialization script

mysql-init/init.sql
3

Start services

4

Initialize database schema

Access the UI

Open http://localhost:8233 to access Temporal Web UI.

Environment Variables

The Docker image supports configuration via environment variables:

Database Configuration

Elasticsearch Configuration

Service Configuration

Logging and Metrics

TLS Configuration

Production Deployment

Multi-Container Setup

For production, run separate containers for each service:

Health Checks

Add health checks to your containers:

Volume Mounts

Mount configuration and TLS certificates:

Dockerfile Reference

The official Temporal Server Dockerfile:

Entrypoint Script

Common Issues

Symptoms: Container fails to start with database connection errorsSolutions:
  • Ensure database is running and accessible
  • Verify network connectivity between containers
  • Check database credentials in environment variables
  • Initialize schema using temporal-sql-tool or temporal-cassandra-tool
Symptoms: “Address already in use” errorsSolutions:
  • Check for other services using the same ports
  • Modify port mappings in docker-compose.yml
  • Use environment variables to change default ports
Symptoms: Container OOM killed or high CPU usageSolutions:
  • Increase Docker memory limits
  • Reduce NUM_HISTORY_SHARDS for development
  • Lower database connection pool sizes
  • Scale services horizontally
For Kubernetes deployments, see the official Temporal Helm charts.