Environment Overview

What is an Environment?

An environment is an isolated space where your application services run. Think of them as different stages like development, staging, or production environments. Each environment has its own set of services, configurations, and network isolation.

Isolated Service Container

Environments run on workmachines as isolated containers with their own network namespace. This provides:

  • Isolated services per environment
  • Separate configuration for each stage
  • Service discovery via DNS
  • Network isolation and security

Quick Setup

Define services using Docker Compose and deploy instantly. No complex infrastructure setup required.

Isolated & Secure

Each environment runs in its own network namespace, preventing conflicts and ensuring security between environments.

Key Features

Docker Compose Services

Define all your services using standard Docker Compose syntax. Databases, caches, APIs, message queues - anything that runs in a container can be deployed to your environment.

Configuration Management

Manage environment variables, configuration files, and secrets at the environment level. All services can reference these configs, making it easy to update configuration without modifying service definitions.

Service Discovery

Services within an environment can communicate using simple service names as DNS hostnames. Connect to your database using postgres:5432 instead of hardcoding IPs.

Workspace Connectivity

Workspaces can connect to environments to access their services. When connected, workspaces can access all environment services by name, making development and testing seamless.

Environment Architecture

Environment Namespace
Docker Compose
Environment variables
Network
Isolated namespace

Environment Components

Each environment runs on a workmachine with isolated networking:

  • Services: Containerized applications defined via Docker Compose
  • Configuration: Environment-level configs, secrets, and variables
  • Networking: Isolated network namespace with DNS-based service discovery
  • Storage: Persistent volumes for data storage

Services

Services are the containerized applications that run in your environment. They are defined using standard Docker Compose syntax and can include databases, caches, APIs, and any other containerized services your application needs.

Common Service Types:

  • Databases (PostgreSQL, MongoDB, MySQL)
  • Caches (Redis, Memcached)
  • Message Queues (RabbitMQ, Kafka)
  • Application APIs and services
  • Background workers
  • Third-party tools

Learn More

See the Services documentation for detailed information on defining and managing services.

Configuration & Secrets

Manage configuration and sensitive data at the environment level. All services in an environment can reference these configs and secrets, making it easy to update configuration without modifying service definitions.

Environment Variables

Key-value pairs for simple configuration like database URLs, API keys, and feature flags.

Config Files

Upload complete configuration files that services can mount and use.

Secrets Management

Securely store sensitive data with encryption at rest. Secrets are only decrypted when injected into services.

Learn More

See the Configs & Secrets documentation for detailed information on managing configuration and secrets.

Networking

Each environment has its own isolated network namespace. Services within an environment can communicate with each other using service names as DNS hostnames, providing simple service discovery without hardcoding IPs.

Network Features:

  • Service Discovery: Access services by name (e.g., postgres:5432, redis:6379)
  • Network Isolation: Each environment has its own isolated network namespace
  • Workspace Connectivity: Workspaces can connect to access environment services
  • Service Intercepts: Route service traffic to workspaces for debugging

Use Cases

Team Collaboration

Create shared environments that your entire team can access. Everyone connects to the same services, ensuring consistent data and behavior across the team.

Isolated Testing

Spin up isolated environments for testing features without affecting other team members. Test integration with services in a controlled environment.

Multiple Stages

Create separate environments for different stages of development. Have dedicated environments for testing, staging, or demo purposes with their own configurations.

Service Development

Develop and test microservices in an environment that mirrors production. Connect workspaces to test service integration and debug with real traffic using service intercepts.