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, чтобы проверить работу бекенда.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ