3.1 Tworzenie Dockerfile dla frontendu (ReactJS)
Na tym etapie stworzymy Dockerfile dla każdego z trzech serwisów naszej aplikacji wielokontenerowej: frontendu na ReactJS, backendu na Python (Flask) i bazy danych PostgreSQL. Dockerfile definiuje instrukcje do tworzenia obrazu Docker dla każdego serwisu.
Utwórz plik Dockerfile w katalogu frontend:
cd frontend
touch Dockerfile
Zawartość Dockerfile dla frontendu:
# Używamy podstawowego obrazu node
FROM node:14
# Ustawiamy katalog roboczy
WORKDIR /app
# Kopiujemy package.json i package-lock.json do instalacji zależności
COPY package*.json ./
# Instalujemy zależności
RUN npm install
# Kopiujemy pozostałe pliki projektu
COPY . .
# Ustawiamy port 3000
EXPOSE 3000
# Uruchamiamy aplikację
CMD ["npm", "start"]
Ten Dockerfile wykonuje następujące kroki:
- Używa podstawowego obrazu
node:14. - Ustawia katalog roboczy
/app. - Kopiuje pliki
package.jsonipackage-lock.json. - Instaluje zależności za pomocą
npm install. - Kopiuje wszystkie pliki projektu do katalogu roboczego.
- Otwiera port
3000dla dostępu do aplikacji. - Uruchamia aplikację za pomocą
npm start.
3.2 Tworzenie Dockerfile dla back-endu (Flask)
Utwórz plik Dockerfile w katalogu backend:
cd backend
touch Dockerfile
Zawartość Dockerfile dla back-endu:
# Używamy bazowego obrazu python
FROM python:3.12
# Ustawiamy katalog roboczy
WORKDIR /app
# Kopiujemy requirements.txt do instalacji zależności
COPY requirements.txt ./
# Instalujemy zależności
RUN pip install --no-cache-dir -r requirements.txt
# Kopiujemy pozostałe pliki projektu
COPY . .
# Określamy port 5000
EXPOSE 5000
# Uruchamiamy aplikację
CMD ["python", "run.py"]
Ten Dockerfile wykonuje następujące kroki:
- Używa bazowego obrazu
python:3.12. - Ustawia katalog roboczy
/app. - Kopiuje plik
requirements.txt. - Instaluje zależności za pomocą
pip install. - Kopiuje wszystkie pliki projektu do katalogu roboczego.
- Otwiera port
5000dla dostępu do aplikacji. - Uruchamia aplikację za pomocą
python run.py.
3.3 Tworzenie Dockerfile dla bazy danych (PostgreSQL)
Dla bazy danych PostgreSQL będziemy używać oficjalnego obrazu, dlatego tworzenie własnego Dockerfile nie jest wymagane. Zamiast tego, skonfigurujemy PostgreSQL za pomocą docker-compose.yml.
3.4 Budowa i testowanie obrazów Docker
Po stworzeniu Dockerfile dla frontend i backend, ważne jest przetestowanie ich budowy.
Budowa obrazu Docker dla frontendu:
cd frontend
docker build -t task_management_frontend .
Budowa obrazu Docker dla backendu:
cd ../backend
docker build -t task_management_backend .
Sprawdzanie działania kontenerów:
Uruchomienie kontenera dla frontendu:
docker run -p 3000:3000 task_management_frontend
Uruchomienie kontenera dla backendu:
docker run -p 5000:5000 task_management_backend
Wejdź na adres http://localhost:3000, aby sprawdzić działanie frontendu, oraz http://localhost:5000, aby sprawdzić działanie backendu.
GO TO FULL VERSION