Project Image

Веб-сайт rastamojka-pro.uz

📅 11 Jul 2025

prod - rastamojka-pro.uz
dev - logistic.bitlab.uz

 


🎯 Цель проекта

Создать современный веб-сайт rastamojka-pro.uz с возможностью динамического управления контентом.                    

🛠️ Используемые технологии и инструменты

📌 Backend:

  • Django – в качестве основного backend-фреймворка.

  • PostgreSQL – база данных.

🎨 Frontend:

  • HTML, CSS, JavaScript


 


Проект с использованием DevOps-инструментов

В рамках данного проекта я реализовал DevOps-инструменты для автоматизации процессов сборки и доставки кода. Теперь разработчики могут сосредоточиться исключительно на написании кода, а все процессы сборки, доставки и запуска приложения происходят автоматически, благодаря настроенной CI/CD-пайплайну.

Что было сделано:

 

1️⃣ Создание веток dev/prod в GitLab
Для разделения рабочих и продакшн-окружений в GitLab были созданы отдельные ветки dev и prod. Это позволило выстроить независимые пайплайны для разных стадий разработки и деплоя.

 

2️⃣ Настройка .gitlab-ci.yml для каждой ветки
Я написал и адаптировал конфигурацию .gitlab-ci.yml, которая содержит пайплайны CI/CD:

  • Для dev ветки - сборка и публикация образа

  • Для prod - сборка, публикация образа в production-окружение

 

3️⃣ Dockerfile
Разработан собственный Dockerfile для сборки приложения.

 

4️⃣ Docker Compose
Создан docker-compose.yml, где описана структура всех необходимых сервисов:

  • Backend-приложение

  • База данных PostgreSQL

  • Обратный прокси-сервер Nginx

 

5️⃣ Реестр образов — Harbor
Все Docker-образы автоматически пушатся в приватный реестр Harbor. Это обеспечивает безопасное хранение артефактов и интеграцию с GitLab CI/CD.


6️⃣ Обратный прокси через Nginx
Nginx проксирует трафик к backend-контейнеру, с настройкой HTTPS (через Let's Encrypt) и редиректом HTTP → HTTPS.


Результат:

  1. Разработчики пушат код — и не беспокоятся о деплое.
  2. Образы автоматически собираются, деплоятся и запускаются.

К сожалению, финальный деплой продакшн-версии был выполнен на классическом хостинге, где возможности по управлению инфраструктурой сильно ограничены. Это наложило определённые ограничения:

  • нельзя подключить дополнительные сервисы, такие как Redis, системы логирования и мониторинга

  • невозможно гибко управлять контейнерами и изолированными средами