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.json
ipackage-lock.json
. - Instaluje zależności za pomocą
npm install
. - Kopiuje wszystkie pliki projektu do katalogu roboczego.
- Otwiera port
3000
dla 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
5000
dla 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