Skip to content

Управление стеками

Стек — это набор контейнеров, описанных в файле compose.yml. Стеки запускаются через Podman Compose от имени непривилегированного пользователя (rootless).

Команды

stack deploy

Загружает или обновляет стек из compose.yml, переданного через stdin. Если стек с таким именем уже существует, он обновляется.

ssh server stack deploy <name>

Примеры:

bash
# Развернуть стек из файла
ssh server stack deploy myapp < compose.yml

# Обновить стек (передать новый compose.yml)
ssh server stack deploy myapp < compose.yml

stack list

Выводит имена всех развёрнутых стеков.

ssh server stack list

Пример вывода:

myapp
postgres
monitoring

stack up

Запускает контейнеры стека (аналог docker compose up -d).

ssh server stack up <name>

Пример:

bash
ssh server stack up myapp

stack down

Останавливает контейнеры стека (аналог docker compose down).

ssh server stack down <name>

Пример:

bash
ssh server stack down myapp

stack remove

Удаляет стек: останавливает контейнеры и удаляет файл compose.yml со всеми данными стека.

ssh server stack remove <name>

Пример:

bash
ssh server stack remove myapp

WARNING

Эта команда необратима. Файл compose.yml будет удалён. Тома (volumes) при этом не удаляются — используйте infra volume prune для очистки неиспользуемых томов.


stack ps

Показывает состояние контейнеров стека (аналог docker compose ps).

ssh server stack ps <name>

Пример вывода:

NAME               IMAGE              COMMAND    SERVICE    CREATED      STATUS         PORTS
myapp_web_1        nginx:alpine       ...        web        2 hours ago  Up 2 hours     0.0.0.0:80->80/tcp
myapp_db_1         postgres:16        ...        db         2 hours ago  Up 2 hours

stack logs

Выводит логи контейнеров стека. Можно указать конкретный сервис.

ssh server stack logs [--follow] <name> [service]

Флаги:

ФлагСокращениеОписание
--follow-fСледить за логами в реальном времени

Примеры:

bash
# Логи всего стека
ssh server stack logs myapp

# Следить за логами в реальном времени
ssh server stack logs -f myapp

# Логи конкретного сервиса
ssh server stack logs myapp web

# Следить за логами конкретного сервиса
ssh server stack logs -f myapp db

Пример compose.yml

yaml
services:
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    secrets:
      - db_password
    volumes:
      - db_data:/var/lib/postgresql/data
    restart: unless-stopped

secrets:
  db_password:
    external: true

volumes:
  db_data:

Использование secrets

Podman secrets, созданные через infra secret create, доступны в compose.yml как external: true.