Refactor and update structure #20
33
Dockerfile
33
Dockerfile
@@ -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"]
|
|
||||||
|
|||||||
17
README.md
17
README.md
@@ -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**
|
||||||
|
|||||||
Reference in New Issue
Block a user