3.1 Створення Dockerfile для фронтенду (ReactJS)
На цьому етапі ми створимо Dockerfile для кожного з трьох сервісів нашого багатоконтейнерного додатку: фронтенду на ReactJS, бекенду на Python (Flask) та бази даних PostgreSQL. Dockerfile визначає інструкції щодо створення Docker-образу для кожного сервісу.
Створіть файл Dockerfile у директорії frontend:
cd frontend
touch Dockerfile
Вміст Dockerfile для фронтенду:
# Використовуємо базовий образ node
FROM node:14
# Встановлюємо робочу директорію
WORKDIR /app
# Копіюємо package.json і package-lock.json для встановлення залежностей
COPY package*.json ./
# Встановлюємо залежності
RUN npm install
# Копіюємо решту файлів проєкту
COPY . .
# Вказуємо порт 3000
EXPOSE 3000
# Запускаємо додаток
CMD ["npm", "start"]
Цей Dockerfile виконує наступні кроки:
- Використовує базовий образ
node:14. - Встановлює робочу директорію
/app. - Копіює файли
package.jsonіpackage-lock.json. - Встановлює залежності за допомогою
npm install. - Копіює всі файли проєкту у робочу директорію.
- Відкриває порт
3000для доступу до додатку. - Запускає додаток за допомогою
npm start.
3.2 Створення Dockerfile для бекенда (Flask)
Створи файл Dockerfile у директорії backend:
cd backend
touch Dockerfile
Вміст Dockerfile для бекенда:
# Використовуємо базовий образ python
FROM python:3.12
# Встановлюємо робочу директорію
WORKDIR /app
# Копіюємо requirements.txt для встановлення залежностей
COPY requirements.txt ./
# Встановлюємо залежності
RUN pip install --no-cache-dir -r requirements.txt
# Копіюємо інші файли проєкту
COPY . .
# Задаємо порт 5000
EXPOSE 5000
# Запускаємо додаток
CMD ["python", "run.py"]
Цей Dockerfile виконує такі кроки:
- Використовує базовий образ
python:3.12. - Встановлює робочу директорію
/app. - Копіює файл
requirements.txt. - Встановлює залежності за допомогою
pip install. - Копіює всі файли проєкту до робочої директорії.
- Відкриває порт
5000для доступу до додатку. - Запускає додаток за допомогою
python run.py.
3.3 Створення Dockerfile для бази даних (PostgreSQL)
Для бази даних PostgreSQL ми будемо використовувати офіційний образ, тому створення власного Dockerfile не потрібне. Замість цього, ми налаштуємо PostgreSQL через docker-compose.yml.
3.4 Збірка та тестування Docker-образів
Після створення Dockerfile для фронтенду та бекенду, важливо протестувати їх збірку.
Збірка Docker-образу для фронтенду:
cd frontend
docker build -t task_management_frontend .
Збірка Docker-образу для бекенду:
cd ../backend
docker build -t task_management_backend .
Перевірка роботи контейнерів:
Запуск контейнера для фронтенду:
docker run -p 3000:3000 task_management_frontend
Запуск контейнера для бекенду:
docker run -p 5000:5000 task_management_backend
Перейдіть за адресою http://localhost:3000, щоб перевірити роботу фронтенду, і http://localhost:5000, щоб перевірити роботу бекенду.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ