Playspec
Playspec — це блюпринт, що визначає структуру вашого середовища розробки. Він обгортає Docker Compose файл, класифікує кожен сервіс та збагачує його конфігурацією платформи — маршрутизацією та монтуванням вихідного коду.
Огляд
Уявіть Playspec як шаблон середовища, що можна використовувати повторно. Ви визначаєте його один раз, а потім запускаєте скільки завгодно Playground з нього — кожен Playground є незалежним, запущеним екземпляром того самого Playspec.
Конфігурація
| Поле | Опис |
|---|---|
| Назва | Зрозуміла назва для цього Playspec |
| Опис | Необовʼязковий опис (до 1000 символів) |
| Docker Compose YAML | Базовий docker-compose.yml, що визначає ваші сервіси |
| Сервіси | Класифікований список сервісів (див. нижче) |
| Persist Volumes | Чи зберігати Docker-томи при пересозданні Playground |
Docker Compose визначення
Кожен Playspec починається зі стандартного Docker Compose YAML. Ви можете:
- Написати вручну у вбудованому YAML-редакторі
- Завантажити з Playzone — Якщо ваш репозиторій містить
docker-compose.yml, платформа автоматично його виявить та імпортує - Імпортувати з шаблону — Використайте готовий шаблон з Stargate або My Fleet
Платформа парсить та валідує Compose-файл, витягуючи визначення сервісів, порти та іншу конфігурацію.
Класифікація сервісів
Після надання Compose YAML ви маєте класифікувати кожен сервіс як статичний або динамічний:
| Тип | Опис | Приклад |
|---|---|---|
| Статичний | Стандартний Docker-контейнер з готовим образом. Без монтування вихідного коду. | PostgreSQL, Redis, Elasticsearch |
| Динамічний | Сервіс з вихідним кодом. Підтримує Dev-режим (живе редагування) та Production-режим (зібраний образ). | Ваш веб-додаток, API-сервер, worker |
Конфігурація динамічного сервісу
Кожен динамічний сервіс вимагає додаткової конфігурації:
| Поле | Опис | За замовчуванням |
|---|---|---|
| Playzone | Який GitHub-репозиторій надає вихідний код | — |
| Шлях до Dockerfile | Шлях до Dockerfile у репозиторії | Dockerfile |
| Шлях до Env File | Шлях до .env.example для змінних середовища за замовчуванням | .env.example |
| Робоча директорія | Робоча директорія контейнера, куди монтується вихідний код | /app |
Конфігурація статичного сервісу
Статичні сервіси вимагають лише імʼя образу (напр., postgres:16, redis:7).
Відкриття сервісів
Кожен сервіс може бути відкритий для мережі з такими налаштуваннями:
| Поле | Опис | За замовчуванням |
|---|---|---|
| Увімкнено | Чи доступний сервіс через HTTP | false |
| Порт | Порт контейнера для відкриття | 80 |
| Субдомен | Префікс субдомену для URL сервісу | Імʼя сервісу |
| Видимість | Рівень контролю доступу | internal |
Параметри видимості
| Видимість | Поведінка |
|---|---|
| External | Публічно доступний — будь-хто з URL може отримати доступ до сервісу |
| Internal | Захищений HTTP Basic Auth — вимагає імʼя користувача та пароль Playground |
Субдомени визначаються на рівні Playspec як значення за замовчуванням, але можуть бути перевизначені для кожного Playground. Це дозволяє кільком Playground з одного Playspec співіснувати на одному Playroom без конфліктів субдоменів.
Монтовані файли
Ви можете прикріпити до 50 файлів (максимум 500 МБ кожен) до Playspec. Ці файли синхронізуються на віддалений хост та монтуються у вказані сервіси. Типові випадки використання:
- Конфігураційні файли (напр.,
nginx.conf,.env.production) - SSL-сертифікати
- Файли з початковими даними
Кожен монтований файл налаштовується з:
- Шлях монтування — Абсолютний шлях всередині контейнера
- Цільові сервіси — Які сервіси отримують монтування
- Тільки для читання — Чи є монтування тільки для читання (за замовчуванням: так)
Облікові дані реєстру
Якщо ваші сервіси використовують образи з приватних Docker-реєстрів, ви можете додати облікові дані до Playspec. Платформа використовує ці дані для автентифікації операцій docker pull на Playroom.
Augmented Compose Template
При збереженні Playspec платформа генерує augmented compose template — збагачену версію вашого оригінального Compose YAML, що включає:
- Мітки маршрутизації Traefik для кожного відкритого сервісу
- Мережеву конфігурацію для ізоляції сервісів та ingress
- Монтування томів для вихідного коду
- Змінні середовища платформи
Цей шаблон використовується внутрішньо і не може бути редагований безпосередньо. Він перегенеровується при зміні сервісів Playspec.
Заблокований статус
Playspec стає заблокованим, коли на нього посилається будь-який Playground. Поки заблоковано:
- Docker Compose YAML, сервіси, монтовані файли та облікові дані реєстру не можуть бути змінені
- Назва та опис можуть бути оновлені
- Playspec не може бути видалений
Щоб розблокувати Playspec, видаліть усі Playground, що на нього посилаються.
Збереження стану
Коли Persist Volumes увімкнено, Playspec вважається stateful. Це означає:
- Docker-томи зберігаються при пересозданні Playground
- Імена томів мають префікс
pv-{playspec_id}-{playroom_id}для ізоляції - Лише один Playground на комбінацію Playspec+Playroom може існувати одночасно (для запобігання конфліктів томів)
Коли вимкнено, томи знищуються та створюються заново при кожному пересозданні Playground.
Ліміти ресурсів
| Ліміт | Значення |
|---|---|
| Максимум Playspec на акаунт | 1 000 |
| Максимум монтованих файлів на Playspec | 50 |
| Максимальний розмір файлу | 500 МБ на файл |