LogoLogo
  • Welcome to Release
  • Getting started
    • Quickstart
    • Create an account
    • Prepare to use Release
    • Create an application
      • Create custom application
      • Create from template
      • Servers vs runnables
    • Create an environment
  • Guides and examples
    • Domains and DNS
      • Manage domains
      • DNS and nameservers
        • Configure GoDaddy
        • Configure Cloudflare
        • Configure Namecheap
        • Other DNS hosts
      • Routing traffic
    • Example applications
      • Full stack voting app
      • Flask and RDS counter app
      • Static site with Gatsby
      • Golang with Postgres and Nginx
      • WordPress with MySQL
      • Spring and PostgreSQL
      • Terraform and Flask
      • OpenTelemetry demo
      • Load balancer with hostname
      • Static JavaScript service
      • SSH bastion access to services
      • ngrok and OAuth for private tunnels
      • Using OAuth Proxy
      • Hybrid Docker and static site
      • App Imports: Connecting two applications
      • Example library
    • Running instances
      • Cron jobs
      • Jobs
      • Using Helm charts
      • Using terminal
      • Viewing logs
      • Troubleshooting
        • ImagePullBackoff error
        • CrashLoopBackoff error
        • Exit codes
        • OOM: out of memory
    • Advanced guides
      • Containers guide
      • Application guide
      • Kubernetes guide
      • Create a cluster
      • Upgrade a cluster
      • Managing node groups
      • Patch node groups
      • Hostnames and rules
      • Serve traffic on multiple ports
      • Configure access to your K8s cluster
      • Designing for multiple environments
      • Microservices architecture
      • Monitoring your clusters
      • Performance tuning
      • Visibility and monitoring
      • Working with data
        • Container-based data
        • Seeding and migration
        • Cloud-provided data
        • Golden images
        • Third party
      • Pausing Instant Datasets
        • Application pausing schedules
        • Pause/resume environments
      • Infrastructure as code
        • Terraform
  • Reference documentation
    • Account settings
      • Account info
      • Managing users
      • Build settings
        • Build arguments
        • Build SSH keys
      • Add integrations
      • View clusters and cloud integrations
      • Add datasets
      • Environment handles
    • Workflows in Release
      • Stages of workflows
      • Serial deployments
      • Parallel deployments
      • Rolling deployments
      • Rainbow deployments
    • Networking
      • Network architecture (AWS)
      • Network architecture (GCP)
      • Ingresses
      • IP addresses
      • Cloud-provided services
      • Third-party services
    • Release environment versioning
    • Application settings
      • Application Template
        • Schema definition
      • Default environment variables
      • GitHub
      • Pull requests
      • GitOps
      • Just-in-time file mounts
      • Primary App Link
      • Create application FAQ
      • App-level build arguments
      • Parameters
      • Workspaces
    • End-to-end testing
    • Environment settings
      • Environment configuration
      • Environment variables
        • Environment variable mappings
        • Secrets vaults
        • Using Secrets with GitOps
        • Kubernetes Secrets as environment variables
        • Managing legacy Release Secrets
    • Environment expiration
    • Environment presets
    • Instant datasets on AWS
    • Instant datasets on GCP
    • Instant dataset tasks
      • Tonic Cloud
      • Tonic On-Premise
    • Cloud resources
    • Static service deployment
    • Helm
      • Getting started
      • Version-controlled Helm charts
      • Open-source charts
      • Building Docker images
      • Ingress and networking
      • Configuration
    • GitOps
    • The .release.yaml file
    • Docker Compose conversion support
    • Reference examples
      • Adding and removing services
      • Managing service resources
      • Adding database containers to the Application Template
      • Stock Off-The-Shelf Examples
    • Release API
      • Account Authentication
      • Environments API
        • Create
        • Get
        • Setup
        • Patch
      • User Authentication
      • Environment Presets API
        • Get Environment Preset List
        • Get Environment Preset
        • Put Environment Preset
  • Background concepts
    • How Release works
  • Frequently asked questions
    • Release FAQ
    • AWS FAQ
    • Docker FAQ
    • JavaScript FAQ
  • Integrations
    • Integrations overview
      • Artifactory integration
      • Cloud integrations (AWS)
        • AWS guides
        • Grant access to AWS resources
        • AWS how to increase EIP quota
        • Control your EKS fleet with systems manager
        • Managing STS access
        • AWS Permissions Boundaries
        • Private ECR Repositories
        • Using an Existing AWS VPC
        • Using an Existing EKS Cluster
      • Docker Hub integration
      • LaunchDarkly integration
      • Private registries
      • Slack integration
      • Cloud integrations (GCP)
        • GCP Permissions Boundary
      • Datadog Agent
      • Doppler Secrets Manager
      • AWS Secrets Management
    • Source control integrations
      • GitHub
        • Pull request comments
        • Pull request labels
        • GitHub deployments
        • GitHub statuses
        • Remove GitHub integration
      • Bitbucket
      • GitLab
    • Monitoring and logging add-ons
      • Datadog
      • New Relic
      • ELK (Elasticsearch, Logstash, and Kibana)
  • Release Delivery
    • Create new customer integration
    • Delivery guide
    • Release to customer account access controls
    • Delivery FAQs
  • Release Instant Datasets
    • Introduction
    • Quickstart
    • Security
      • AWS Instant Dataset security
    • FAQ
    • API
  • CLI
    • Getting started
    • Installation
    • Configuration
    • CLI usage example
    • Remote development environments
    • Command reference
      • release accounts
        • release accounts list
        • release accounts select
      • release ai
        • release ai chat
        • release ai config-delete
        • release ai config-init
        • release ai config-select
        • release ai config-upsert
      • release apps
        • release apps list
        • release apps select
      • release auth
        • release auth login
        • release auth logout
      • release builds
        • release builds create
      • release clusters
        • release clusters exec
        • release clusters kubeconfig
        • release clusters shell
      • release datasets
        • release datasets list
        • release datasets refresh
      • release deploys
        • release deploys create
        • release deploys list
      • release development
        • release development logs
        • release development start
      • release environments
        • release environments config-get
        • release environments config-set
        • release environments create
        • release environments delete
        • release environments get
        • release environments list
        • release environments vars-get
      • release gitops
        • release gitops init
        • release gitops validate
      • release instances
        • release instances exec
        • release instances logs
        • release instances terminal
  • Release.ai
    • Release.ai Introduction
    • Getting Started
    • Release.ai Templates
    • Template Configuration Basics
    • Using GPU Resources
    • Custom Workflows
    • Fine Tuning LlamaX
    • Serving Inference
Powered by GitBook
On this page
  • Overview
  • Defining Workspaces
  • Single Auto-Attached Workspace
  • Multiple Workspaces (Advanced)
  • Use Cases
  • Sharing files between jobs
  • Mounting Git repositories
  • Mounting cloud storage buckets

Was this helpful?

  1. Reference documentation
  2. Application settings

Workspaces

Overview

Release Workspaces provide multiple containers within your environment or runnable job with access to a common filesystem. This filesystem can be made up of both regular shared files that can be created and modified by your containers or mounts of external resources such as cloud storage buckets (S3, GCS, etc.) or Git repositories.

Defining Workspaces

Single Auto-Attached Workspace

In most cases all you'll need is a single workspace per environment that you'll want automatically attached to all of your containers.

The recommended basic configuration is:

workspaces:
  - name: default
    auto_attach: true
    path: /workspace

By setting auto_attach: true, the workspace will be automatically attached to every job and service defined in your Application Template and accessible from /workspace within the container's filesytem.

Multiple Workspaces (Advanced)

In more advanced cases you may want to have multiple workspaces and control which jobs and services have access to which workspaces.

Here's an example configuration:

workspaces:
  - name: frontend
    path: /assets
  - name: backend
    path: /assets

services:
  - name: frontend
    image: frontend-server
    workspaces:
      - frontend

  - name: backend
    image: backend-server
    workspaces:
      - backend

jobs:
  - name: build-frontend-assets
    image: build-frontend
    workspaces:
      - frontend

  - name: build-backend-assets
    image: build-backend
    workspaces:
      - backend

In this example, both the backend-related server and build job and the frontend-related server and build job each have access to a shared /assets directories but because they are in different workspaces, they're completely isolated filesystems.

Use Cases

Sharing files between jobs

A common use case is when a pipeline of jobs all need to work on files produced by previous jobs in the pipeline. Workspaces can make this simple by providing a known location to read/write files.

Example:

workspaces:
  - name: default
    auto_attach: true
    path: /workspace

jobs:
  # Downloads a model and writes it to /workspace/model
  - name: download
    image: download-model

  # Finetunes the model at /workspace/model and writes it to /workspace/model-finetuned
  - name: finetune
    image: finetune-model

services:
  # Runs an inference server for the finetuned model from /workspace/model-finetuned
  - name: serve
    image: serve-model

workflows:
  - name: setup
    parallelize:
      - step: download
        tasks:
          - jobs.download
      - step: finetune
        tasks:
          - jobs.finetune
      - step: serve
        tasks:
          - jobs.serve

Mounting Git repositories

Example:

workspaces:
  - name: default
    auto_attach: true
    path: /workspace
    mounts:
      - path: my-repo
        source_url: https://github.com/org/repo#branch

services:
  # Runs a notebook with the code checked out at /workspaces/my-repo
  - name: notebook
    image: notebook

Note that writes to a Git repository mount are allowed but will be only visible locally. The container must commit and push to make the changes accessible remotely.

Mounting cloud storage buckets

Example:

workspaces:
  - name: default
    auto_attach: true
    path: /workspace
    mounts:
      - path: my-training-data
        source_url: s3://my-bucket/my/prefix/training-data

jobs:
  # Runs a training job with the training data file available at
  # /workspaces/my-training-data
  - name: training
    image: training

Explicitly setting the bucket region

workspaces:
  - name: default
    auto_attach: true
    path: /workspace
    mounts:
      - path: my-training-data
        source_url: s3://my-bucket/my/prefix/training-data?region=us-west-2

Mounting a public S3 bucket

workspaces:
- name: default
  auto_attach: true
  path: /workspace
  mounts:
  - source_url: s3://scedc-pds?no-sign-request&region=us-west-2
    path: /sc-earthquake-data
PreviousParametersNextEnd-to-end testing

Last updated 9 months ago

Was this helpful?

To make the contents of a Git repository available to one or more of your containers you can use

To dynamically mount a Git repository based on user input, see .

To make the contents of a cloud storage bucket available to one or more of your containers you can use

To set S3 mount options, you can add query string parameters to your source_url. The query string parameters correspond directly to .

To mount a public S3 bucket, disable request signing and set the bucket region. For example, to mount you'd specify the source_url as:

To dynamically mount a cloud storage bucket or file based on user input or a file upload, see .

Parameters
the Mountpoint S3 configuration flags
this public dataset of Southern California Earthquake Data
Parameters
Workspace Mounts
Workspace Mounts