Como Implantar a Aplicação

O projeto Salvo, após compilado, torna-se um arquivo executável. Para implantá-lo, basta enviar esse arquivo executável junto com os recursos estáticos necessários para o servidor.

Para projetos em Rust, existe uma plataforma de implantação muito simples: shuttle.rs. O shuttle oferece suporte para projetos como o Salvo. Para mais detalhes, consulte a documentação oficial.

Implantação com Docker

Você também pode usar Docker para implantar aplicações Salvo. Abaixo está um exemplo básico de Dockerfile, que pode ser ajustado conforme as necessidades do seu projeto:

# Fase de construção
FROM rust:slim AS build
WORKDIR /app

# Copiar arquivos de dependência primeiro para aproveitar o cache
COPY Cargo.toml Cargo.lock ./
RUN mkdir src && \
    echo 'fn main() { println!("Placeholder"); }' > src/main.rs && \
    cargo build --release

# Copiar o código-fonte real e construir a aplicação
COPY src ./src/
RUN touch src/main.rs && \
    cargo build --release

# Fase de execução usando uma imagem base minimalista
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/*

# Criar um usuário não-root para executar a aplicação
RUN useradd -ms /bin/bash appuser
USER appuser
WORKDIR /app

# Copiar o binário da fase de construção
COPY --from=build /app/target/release/your_app_name ./app

# Definir o comando de inicialização do container
CMD ["./app"]

Instruções de Uso

  1. Salve o Dockerfile acima na raiz do seu projeto
  2. Substitua your_app_name pelo nome real do arquivo binário do seu projeto
  3. Se sua aplicação necessitar de arquivos estáticos (como templates, CSS, JS, etc.), adicione os comandos COPY correspondentes
  4. Caso sua aplicação precise de variáveis de ambiente, utilize a instrução ENV
  5. Construa a imagem Docker:
    docker build -t seu-nome-de-app .
  6. Execute o container:
    docker run -p 5800:5800 seu-nome-de-app

Ajuste o número da porta e outras configurações conforme as necessidades reais da sua aplicação.