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
# Infatti scegliamo l'immagine ufficiale di uv che ha già tutto configurato
FROM ghcr.io/astral-sh/uv:python3.12-alpine
# Utilizziamo Debian slim invece di Alpine per migliore compatibilità
FROM debian:bookworm-slim
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
WORKDIR /app
# Installiamo uv
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
ENV UV_PROJECT_ENVIRONMENT=/usr/local
# Configuriamo UV per usare copy mode ed evitare problemi di linking
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 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
COPY LICENSE .
COPY src ./src
# Creiamo l'ambiente virtuale con tutto già presente
RUN uv sync
ENV PYTHONPATH="/app/src"
# Comando di default all'avvio dell'applicazione
CMD ["echo", "Benvenuto in UPO AppAI!"]
CMD ["uv", "run", "src/app.py"]
# Comando di avvio dell'applicazione
CMD ["uv", "run", "src/app"]

View File

@@ -31,9 +31,10 @@ L'installazione di questo progetto richiede 3 passaggi totali (+1 se si vuole sv
### **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
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).\
@@ -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.
```sh
# Configura le variabili d'ambiente
cp .env.example .env
nano .env # Modifica il file
# Avvia il container
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
```
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
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
uv run python src/app.py
uv run python src/app
```
# **Applicazione**