3.1 Erstellen einer Dockerfile für das Frontend (ReactJS)
In diesem Schritt erstellen wir eine Dockerfile für jeden der drei Services unserer Multi-Container-Applikation: das Frontend auf ReactJS, das Backend auf Python (Flask) und die PostgreSQL-Datenbank. Die Dockerfile definiert Anweisungen zur Erstellung eines Docker-Images für jeden Service.
Erstelle die Datei Dockerfile im Verzeichnis frontend:
cd frontend
touch Dockerfile
Inhalt der Dockerfile für das Frontend:
# Verwenden des Basis-Images node
FROM node:14
# Festlegen des Arbeitsverzeichnisses
WORKDIR /app
# Kopieren von package.json und package-lock.json, um Abhängigkeiten zu installieren
COPY package*.json ./
# Installieren der Abhängigkeiten
RUN npm install
# Kopieren der restlichen Projektdateien
COPY . .
# Festlegen des Ports 3000
EXPOSE 3000
# Starten der Applikation
CMD ["npm", "start"]
Diese Dockerfile führt folgende Schritte aus:
- Verwendet das Basis-Image
node:14
. - Setzt das Arbeitsverzeichnis auf
/app
. - Kopiert die Dateien
package.json
undpackage-lock.json
. - Installiert Abhängigkeiten mit
npm install
. - Kopiert alle Projektdateien ins Arbeitsverzeichnis.
- Öffnet den Port
3000
für den Zugriff auf die Applikation. - Startet die Applikation mit
npm start
.
3.2 Erstellung von Dockerfile für das Backend (Flask)
Erstelle eine Datei namens Dockerfile im Verzeichnis backend:
cd backend
touch Dockerfile
Inhalt des Dockerfiles für das Backend:
# Wir verwenden das Basis-Image python
FROM python:3.12
# Arbeitsverzeichnis einstellen
WORKDIR /app
# Kopiere requirements.txt um Abhängigkeiten zu installieren
COPY requirements.txt ./
# Installiere Abhängigkeiten
RUN pip install --no-cache-dir -r requirements.txt
# Kopiere die restlichen Projektdateien
COPY . .
# Port 5000 definieren
EXPOSE 5000
# Starte die Anwendung
CMD ["python", "run.py"]
Dieses Dockerfile führt die folgenden Schritte aus:
- Verwendet das Basis-Image
python:3.12
. - Setzt das Arbeitsverzeichnis auf
/app
. - Kopiert die Datei
requirements.txt
. - Installiert Abhängigkeiten mit
pip install
. - Kopiert alle Projektdateien in das Arbeitsverzeichnis.
- Öffnet den Port
5000
für den Zugriff auf die Anwendung. - Startet die Anwendung mittels
python run.py
.
3.3 Erstellung eines Dockerfile für die Datenbank (PostgreSQL)
Für die Datenbank PostgreSQL verwenden wir das offizielle Image, daher ist die Erstellung eines eigenen Dockerfile nicht erforderlich. Stattdessen konfigurieren wir PostgreSQL über docker-compose.yml
.
3.4 Erstellung und Testen von Docker-Images
Nach der Erstellung der Dockerfile für Frontend und Backend ist es wichtig, deren Build zu testen.
Erstellen des Docker-Images für das Frontend:
cd frontend
docker build -t task_management_frontend .
Erstellen des Docker-Images für das Backend:
cd ../backend
docker build -t task_management_backend .
Überprüfung der Container-Funktionalität:
Starten eines Containers für das Frontend:
docker run -p 3000:3000 task_management_frontend
Starten eines Containers für das Backend:
docker run -p 5000:5000 task_management_backend
Gehe zur Adresse http://localhost:3000, um die Funktionalität des Frontends zu überprüfen, und zu http://localhost:5000, um die Funktionalität des Backends zu testen.
GO TO FULL VERSION