Skip to main content
Skip to main content
🚧 Work in Progress

Create shared storage service for Elixir

Zerops provides shared storage service that can be connected to runtime services. Shared storage enables your Elixir service to share files between all containers of the same service or even among containers of different runtime services.

Connect shared storage in Zerops GUI​

When creating new shared storage​

Connect your Elixir service directly when creating a new shared storage service. Select your Elixir service in the Share with Services block on the Add new shared storage service page.

connect_shared_storage_1

Connect existing shared storage​

To connect existing shared storage to your Elixir service:

  1. Go to the shared storage service detail page
  2. Select Shared storage connections
  3. Choose your Elixir service from the list of runtime services
  4. The shared storage will be connected to your service

connect_shared_storage_1

How it works​

Zerops creates a new folder /mnt/[shared storage name] in your Elixir service's root directory. For example, /mnt/teststorage for a teststorage shared storage.

The content of this folder is shared among:

  • All containers of your Elixir service
  • All containers of other connected runtime services (if you connect multiple services)

Disconnect shared storage​

To disconnect shared storage from your Elixir service:

  1. Go to the shared storage service detail page
  2. Select Shared storage connections
  3. Switch off the toggle next to your Elixir service

Create Elixir service with shared storage using zCLI​

zCLI is the Zerops command-line tool. To create a new Elixir service with shared storage via command-line:

  1. Install & setup zCLI
  2. Create a project description file
  3. Create the project

Create project description file​

Zerops uses YAML format to describe project infrastructure. Read the basics about defining Elixir services in description.yaml.

Example with shared storage​

Create a directory my-project and add a description.yaml file:

# Basic project data
project:
name: my-project
description: A project with Elixir and shared storage
tags:
- DEMO
- ZEROPS

# Project services
services:
- # Shared storage service
hostname: teststorage
type: shared-storage
mode: NON_HA

- # Elixir service
hostname: app
type: elixir@1
minContainers: 1
maxContainers: 3

# Mount the shared storage
mount:
- teststorage

The mount attribute accepts an array of shared storage names to mount to your Elixir service.

Create project with shared storage​

Follow the guide how to create a project based on description.yaml to deploy your Elixir service with shared storage.