Come Distribuire Applicazioni

Un progetto Salvo, dopo la compilazione, diventa un file eseguibile. Per la distribuzione, è sufficiente caricare questo eseguibile insieme alle risorse statiche da cui dipende sul server.

Per i progetti basati su Rust, esiste anche una piattaforma di distribuzione molto semplice: shuttle.rs. Shuttle fornisce supporto per progetti simili a Salvo. Per i dettagli, consultare la documentazione ufficiale.

Distribuzione con Docker

È possibile utilizzare Docker per distribuire applicazioni Salvo. Di seguito è riportato un esempio di Dockerfile di base, che può essere adattato in base alle esigenze del progetto:

# Fase di build
FROM rust:slim AS build
WORKDIR /app

# Copiare prima i file delle dipendenze per costruire le dipendenze (sfruttando i livelli di cache)
COPY Cargo.toml Cargo.lock ./
RUN mkdir src && \
    echo 'fn main() { println!("Placeholder"); }' > src/main.rs && \
    cargo build --release

# Copiare il codice sorgente effettivo e costruire l'applicazione
COPY src ./src/
RUN touch src/main.rs && \
    cargo build --release

# Utilizzare un'immagine base leggera per la fase di runtime
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/*

# Creare un utente non root per eseguire l'applicazione
RUN useradd -ms /bin/bash appuser
USER appuser
WORKDIR /app

# Copiare il file binario dalla fase di build
COPY --from=build /app/target/release/nome_tua_app ./app

# Impostare il comando di avvio del container
CMD ["./app"]

Istruzioni per l'uso

  1. Salvare il Dockerfile sopra nella directory principale del progetto.
  2. Modificare nome_tua_app con il nome effettivo del file binario in base al progetto.
  3. Se l'applicazione richiede file statici (come modelli, CSS, JS, ecc.), è possibile aggiungere i comandi COPY corrispondenti.
  4. Se l'applicazione richiede la configurazione di variabili d'ambiente, è possibile utilizzare l'istruzione ENV.
  5. Costruire l'immagine Docker:
    docker build -t nome-tua-app .
  6. Eseguire il container:
    docker run -p 8698:8698 nome-tua-app

Si prega di adattare il numero di porta e altre configurazioni in base alle esigenze effettive dell'applicazione.