3.1 Creazione di un Dockerfile per il frontend (ReactJS)
In questo passaggio creeremo un Dockerfile per ciascuno dei tre servizi della nostra applicazione multicontenitore: il frontend su ReactJS, il backend su Python (Flask) e il database PostgreSQL. Il Dockerfile definisce le istruzioni per creare un'immagine Docker per ogni servizio.
Crea un file Dockerfile nella directory frontend:
cd frontend
touch Dockerfile
Contenuto del Dockerfile per il frontend:
# Usiamo l'immagine base di node
FROM node:14
# Impostiamo la directory di lavoro
WORKDIR /app
# Copiamo package.json e package-lock.json per installare le dipendenze
COPY package*.json ./
# Installiamo le dipendenze
RUN npm install
# Copiamo gli altri file del progetto
COPY . .
# Impostiamo la porta 3000
EXPOSE 3000
# Avviamo l'applicazione
CMD ["npm", "start"]
Questo Dockerfile fa i seguenti passi:
- Usa l'immagine base
node:14
. - Imposta la directory di lavoro
/app
. - Copia i file
package.json
epackage-lock.json
. - Installa le dipendenze usando
npm install
. - Copia tutti i file del progetto nella directory di lavoro.
- Apre la porta
3000
per accedere all'applicazione. - Avvia l'applicazione usando
npm start
.
3.2 Creazione del Dockerfile per il backend (Flask)
Crea un file Dockerfile nella directory backend:
cd backend
touch Dockerfile
Contenuto del Dockerfile per il backend:
# Usiamo l'immagine base python
FROM python:3.12
# Impostiamo la directory di lavoro
WORKDIR /app
# Copiamo requirements.txt per installare le dipendenze
COPY requirements.txt ./
# Installiamo le dipendenze
RUN pip install --no-cache-dir -r requirements.txt
# Copiamo il resto dei file del progetto
COPY . .
# Impostiamo la porta 5000
EXPOSE 5000
# Avviamo l'applicazione
CMD ["python", "run.py"]
Questo Dockerfile esegue i seguenti passaggi:
- Usa l'immagine base
python:3.12
. - Imposta la directory di lavoro
/app
. - Copia il file
requirements.txt
. - Installa le dipendenze usando
pip install
. - Copia tutti i file del progetto nella directory di lavoro.
- Apre la porta
5000
per l'accesso all'applicazione. - Avvia l'applicazione usando
python run.py
.
3.3 Creazione di un Dockerfile per il database (PostgreSQL)
Per il database PostgreSQL useremo l'immagine ufficiale, quindi non è necessario creare un Dockerfile personalizzato. Invece, configureremo PostgreSQL attraverso docker-compose.yml
.
3.4 Build e test delle immagini Docker
Dopo aver creato i Dockerfile per il frontend e il backend, è importante testare la loro build.
Build dell'immagine Docker per il frontend:
cd frontend
docker build -t task_management_frontend .
Build dell'immagine Docker per il backend:
cd ../backend
docker build -t task_management_backend .
Verifica del funzionamento dei container:
Avvio del container per il frontend:
docker run -p 3000:3000 task_management_frontend
Avvio del container per il backend:
docker run -p 5000:5000 task_management_backend
Vai all'indirizzo http://localhost:3000 per verificare il funzionamento del frontend e a http://localhost:5000 per verificare il funzionamento del backend.
GO TO FULL VERSION