Refactor and update structure #20

Merged
Berack96 merged 22 commits from 16-refactoring-e-sanity-check into main 2025-10-08 16:21:10 +02:00
3 changed files with 25 additions and 25 deletions
Showing only changes of commit cc0cae52db - Show all commits

View File

@@ -1,23 +1,26 @@
# Vogliamo usare una versione di linux leggera con già uv installato # Utilizziamo Debian slim invece di Alpine per migliore compatibilità
# Infatti scegliamo l'immagine ufficiale di uv che ha già tutto configurato FROM debian:bookworm-slim
FROM ghcr.io/astral-sh/uv:python3.12-alpine RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
# Dopo aver definito la workdir mi trovo già in essa # Installiamo uv
WORKDIR /app RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:$PATH"
# Settiamo variabili d'ambiente per usare python del sistema invece che venv # Configuriamo UV per usare copy mode ed evitare problemi di linking
ENV UV_PROJECT_ENVIRONMENT=/usr/local
ENV UV_LINK_MODE=copy ENV UV_LINK_MODE=copy
# Copiamo prima i file di configurazione delle dipendenze e installiamo le dipendenze # Impostiamo la directory di lavoro
WORKDIR /app
# Copiamo i file del progetto
COPY pyproject.toml ./ COPY pyproject.toml ./
COPY uv.lock ./ COPY uv.lock ./
RUN uv sync --frozen --no-cache COPY LICENSE ./
COPY src/ ./src/
# Copiamo i file sorgente dopo aver installato le dipendenze per sfruttare la cache di Docker # Creiamo l'ambiente virtuale con tutto già presente
COPY LICENSE . RUN uv sync
COPY src ./src ENV PYTHONPATH="/app/src"
# Comando di default all'avvio dell'applicazione # Comando di avvio dell'applicazione
CMD ["echo", "Benvenuto in UPO AppAI!"] CMD ["uv", "run", "src/app"]
CMD ["uv", "run", "src/app.py"]

View File

@@ -31,9 +31,10 @@ L'installazione di questo progetto richiede 3 passaggi totali (+1 se si vuole sv
### **1. Variabili d'Ambiente** ### **1. Variabili d'Ambiente**
Copia il file `.env.example` in `.env` e modificalo con le tue API keys: Copia il file `.env.example` in `.env` e successivamente modificalo con le tue API keys:
```sh ```sh
cp .env.example .env cp .env.example .env
nano .env # esempio di modifica del file
``` ```
Le API Keys devono essere inserite nelle variabili opportune dopo l'uguale e ***senza*** spazi. Esse si possono ottenere tramite i loro providers (alcune sono gratuite, altre a pagamento).\ Le API Keys devono essere inserite nelle variabili opportune dopo l'uguale e ***senza*** spazi. Esse si possono ottenere tramite i loro providers (alcune sono gratuite, altre a pagamento).\
@@ -58,11 +59,6 @@ I modelli usati dall'applicazione sono visibili in [src/app/models.py](src/app/m
Se si vuole solamente avviare il progetto, si consiglia di utilizzare [Docker](https://www.docker.com), dato che sono stati creati i files [Dockerfile](Dockerfile) e [docker-compose.yaml](docker-compose.yaml) per creare il container con tutti i file necessari e già in esecuzione. Se si vuole solamente avviare il progetto, si consiglia di utilizzare [Docker](https://www.docker.com), dato che sono stati creati i files [Dockerfile](Dockerfile) e [docker-compose.yaml](docker-compose.yaml) per creare il container con tutti i file necessari e già in esecuzione.
```sh ```sh
# Configura le variabili d'ambiente
cp .env.example .env
nano .env # Modifica il file
# Avvia il container
docker compose up --build -d docker compose up --build -d
``` ```
@@ -80,16 +76,17 @@ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | ie
curl -LsSf https://astral.sh/uv/install.sh | sh curl -LsSf https://astral.sh/uv/install.sh | sh
``` ```
UV installerà python e creerà automaticamente l'ambiente virtuale con le dipendenze corrette (nota che questo passaggio è opzionale, dato che uv, ogni volta che si esegue un comando, controlla se l'ambiente è attivo e se le dipendenze sono installate): Dopodiché bisogna creare un ambiente virtuale per lo sviluppo locale e impostare PYTHONPATH. Questo passaggio è necessario per far sì che Python riesca a trovare tutti i moduli del progetto e ad installare tutte le dipendenze. Fortunatamente uv semplifica molto questo processo:
```sh ```sh
uv sync --frozen --no-cache uv venv
uv pip install -e .
``` ```
A questo punto si può far partire il progetto tramite il comando: A questo punto si può già modificare il codice e, quando necessario, far partire il progetto tramite il comando:
```sh ```sh
uv run python src/app.py uv run python src/app
``` ```
# **Applicazione** # **Applicazione**