Как развернуть приложение

После компиляции проекта Salvo получается исполняемый файл. Для развертывания достаточно загрузить этот файл вместе с необходимыми статическими ресурсами на сервер.

Для проектов на Rust существует очень простая платформа развертывания: shuttle.rs. Shuttle поддерживает проекты типа Salvo, подробности можно найти в официальной документации.

Развертывание с Docker

Вы также можете использовать Docker для развертывания приложений Salvo. Ниже приведен базовый пример Dockerfile, который можно адаптировать под требования вашего проекта:

# Этап сборки
FROM rust:slim AS build
WORKDIR /app

# Копируем файлы зависимостей для предварительной сборки (используем кэширование слоев)
COPY Cargo.toml Cargo.lock ./
RUN mkdir src && \
    echo 'fn main() { println!("Placeholder"); }' > src/main.rs && \
    cargo build --release

# Копируем исходный код и собираем приложение
COPY src ./src/
RUN touch src/main.rs && \
    cargo build --release

# Этап запуска используем облегченный базовый образ
FROM debian:bookworm-slim
RUN apt-get update && \
    apt-get install -y --no-install-recommends ca-certificates && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Создаем непривилегированного пользователя для запуска приложения
RUN useradd -ms /bin/bash appuser
USER appuser
WORKDIR /app

# Копируем исполняемый файл из этапа сборки
COPY --from=build /app/target/release/your_app_name ./app

# Устанавливаем команду запуска контейнера
CMD ["./app"]

Инструкция по использованию

  1. Сохраните приведенный выше Dockerfile в корневой директории вашего проекта
  2. Замените your_app_name на фактическое имя вашего исполняемого файла
  3. Если ваше приложение требует статические файлы (например, шаблоны, CSS, JS), добавьте соответствующие команды COPY
  4. Если приложению нужны переменные окружения, используйте инструкцию ENV
  5. Соберите Docker-образ:
    docker build -t your-app-name .
  6. Запустите контейнер:
    docker run -p 5800:5800 your-app-name

Настройте номер порта и другие параметры в соответствии с требованиями вашего приложения.