текст перекладу
Налаштування середовища розробки може здатися складним, особливо коли потрібно працювати з кількома інструментами, такими як бекенд, база даних і системи управління. Docker спрощує цей процес, утримуючи все організованим у контейнерах.
У цьому посібнику я покажу, як налаштувати Django, PostgreSQL та pgAdmin з Docker, щоб це було просто і без зайвих турбот.
Як налаштувати Docker-середовище розробки для Django з PostgreSQL та pgAdmin
Результати
Налаштування включає три основні частини:
- Django — бекенд
- PostgreSQL — база даних
- pgAdmin4 для управління базою даних.
Налаштування Docker та перевірка
Я припускаю, що Docker вже встановлений і працює так, як очікується.
Перевірте це за допомогою команди
docker
Якщо ваш вивід виглядає ось так, це означає, що він встановлений і працює:
docker
Структура папок
Ось як виглядає моя структура папок
структура папок
У папці django-app ви знайдете мій код для Django додатка та Dockerfile.
Чому Dockerfile окремо?
Тому що у мого Django додатка є власні залежності, які потрібно встановити.
Dockerfile для Django додатка
Ось як виглядає мій Dockerfile:
Це означає, що я вже створив додаток Django та налаштував деякі пакети, наприклад, PostgreSQL.
Docker-compose.yml файл
Тепер нам потрібно три різні контейнери для кожної служби
- Служба Postgres
У цій службі я завантажую офіційний образ postgres:13 з Docker Hub, де 13 вказує на версію PostgreSQL.
- Назва контейнера: rsa_postgres-container.
- Середовище: облікові дані PostgreSQL беруться з файлу .env, де вони визначені.
- Healthcheck: перевіряє, чи існують користувач і база даних.
- restart: контейнер буде завжди перезапускатися навіть після перезавантаження сервера.
2. Служба pgadmin
pgadmin
служба django
Томи
Django додаток копіюється в Docker, тому я тільки зберігаю свою базу даних і дані pgAdmin, ось чому я створив для них томи.
Повний docker-compose.yml
Побудова та запуск контейнерів
Тепер спершу я побудую контейнер, а потім запущу його, щоб переконатися, що немає проблем.
1. Побудова контейнерів
i. Виконайте команду для побудови контейнерів: Відкрийте термінал і виконайте наступну команду:
docker-compose build
Ця команда побудує Docker контейнери відповідно до вашого файлу docker-compose.yml
.
Після завершення процесу ви побачите щось подібне до цього:
docker-compose build
ii. Перевірка, чи побудовані контейнери: Коли ви побачите (11/11) і повідомлення про успіх, це означає, що контейнери побудовані успішно. Щоб перевірити, відкрийте Docker Desktop:
Docker Desktop
У розділі web_app ви повинні побачити 3 контейнери в списку. Спочатку контейнери можуть бути сірими, оскільки вони ще не були запущені.
2. Запуск контейнерів
Тепер я покажу вам два способи запустити контейнери.
**i.
текст перекладу
Запуск усіх контейнерів одночасно (не рекомендовано): Щоб запустити всі контейнери одночасно, виконайте наступну команду:
docker-compose up
Виведення буде схоже на це:
docker-compose up
Виведення покаже дані всіх сервісів одночасно, що ускладнить пошук помилок, якщо вони виникнуть у будь-якому з сервісів. Тому рекомендовано відкривати окремі термінали для кожного сервісу, щоб переконатися, що кожен працює коректно.
ii. Запуск окремих контейнерів: Ось як це виглядає в терміналі VSCode (кожен термінал для різних сервісів):
VSCode terminal
Примітка: я перейменував ці термінали для зручності доступу і використання.
Тепер давайте запустимо кожен сервіс по черзі.
a. PostgreSQL база даних
docker-compose up postgres
Ви побачите виведення, подібне до цього:
docker-compose up postgres
Це запустить вашу PostgreSQL базу даних.
b. pgAdmin (UI для управління базою даних)
Щоб запустити pgAdmin (для доступу до вашої бази даних через UI):
docker-compose up pgadmin
Ви побачите виведення, подібне до цього:
docker-compose up pgadmin
Ви можете отримати доступ до інтерфейсу pgAdmin за адресою: http://localhost:5050/browser/. Коли ви побачите цю сторінку входу, це означає, що ваша PostgreSQL база даних працює коректно.
pgAdmin
c. Django додаток
Щоб запустити Django додаток:
docker-compose up django
docker-compose up django
Отримайте доступ до сторінки адміністрування Django за адресою: http://127.0.0.1:8000/admin/
Коли з’явиться сторінка входу, це означає, що ваш Django додаток працює успішно:
Сторінка адміністрування Django
Вітаємо! Ваші контейнери Django, PostgreSQL та SQL працюють бездоганно.
Підключення PostgreSQL до pgAdmin серверу в (Docker сервері)
Тепер, щоб отримати доступ до нашої бази даних в pgAdmin, потрібно підключити PostgreSQL до сервера pgAdmin.
- Доступ до pgAdmin
Ось так:
pgAdmin
Використовуйте облікові дані, які ви зберегли в .env файлі, ось мої:
- Email:
[email protected]
- Password:
root
Ви потрапите на цю сторінку:
2. Створення нового сервера в pgAdmin: Клацніть правою кнопкою миші на Servers і виберіть Create -> Server
server
У спливаючому вікні надайте ім’я серверу (тобто
текст перекладу
реальнийнерухомістьавтоматизація_сервер).
Перейдіть на вкладку "Connections", ви побачите, що вона питає про хост
Connections tab
Отже, щоб знайти наш хост, потрібно потрапити в контейнер Postgres, (переконайтеся, що ваш контейнер PostgreSQL працює)
Щоб отримати хост, відкрийте новий термінал і знайдіть контейнер PostgreSQL
docker ps -q --filter "name=rsa_postgres-container"
Тут rsa_postgres-container — це ім'я мого контейнера
Виведення буде таким
container ID
Тут 88661ss0d14b — це мій контейнер
Тепер ми використовуємо ID контейнера, щоб знайти IP-адресу:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' your_find_id
Ось так
IP address
Це означає, що це IP-адреса мого контейнера.
c. Введення даних для підключення: Використовуйте адресу хоста з попереднього кроку і додайте до PostgreSQL. Для імені користувача та пароля використовуйте облікові дані з файлу .env (наприклад, airflow).
.env
.env
Залиште інші поля за замовчуванням.
d. Створення нової бази даних: Розгорніть ваш сервер, клацніть правою кнопкою на "Databases" і виберіть "Create -> Database".
будь ласка, використовуйте ті ж облікові дані, що й у файлі .env
db
залиште інші вкладки без змін.
e. Перевірка підключення: Після введення даних натисніть "Save". Тепер ви повинні побачити сервер у pgAdmin. Ось так
Міграції Django
Останній крок — переконатися, що Django і PostgreSQL працюють правильно.
- Перевірка, чи працює контейнер Django: Перевірте Docker Desktop або термінал, щоб побачити зелений статус, що означає, що контейнер працює на порту 8000:8000.
Container
2. Доступ до Django додатку через Термінал: Тепер відкрийте новий термінал і введіть цю команду, щоб потрапити в додаток Django:
docker exec -it rsa_django-app-container bash
Тепер, коли ви потрапите в додаток Django, ви зможете встановлювати пакети або виконувати міграції. Ваш термінал має виглядати ось так
rsadjango-app-container bash_
Тепер ви в контейнері Django. Для того, щоб встановити нові пакети або виконати міграції, використовуйте вищезгадану команду, щоб потрапити в цей контейнер.
3. Виконання міграцій: Тепер давайте виконаємо міграцію за допомогою команди
python manage.py migrate
Тепер,
python manage.py makemigrations
makemigrations
Перевіримо це в pgAdmin. Перейдіть в pgAdmin і перевірте сервер
pgAdmin
Тепер ви побачите всі мої таблиці Django тут.
Бонус
Припускаємо, що ви вже підключили PostgreSQL до Django, якщо ні, виконайте наступні кроки:
- Встановіть пакет psycopg2-binary
- Створіть новий файл у вашій директорії проекту (де знаходиться settings.py) і додайте наступне:
Зверніть увагу, що ці значення беруться з файлу .env, і застосовується декуплінг для їх відокремлення.
3.
текст перекладу
Тепер викличте це у своєму файлі settings.py і змініть базу даних
setting.py
Висновок:
Я перевірив цей блог, протестувавши налаштування і створивши додаток знову. Все працює без помилок, але якщо ви зіткнулися з будь-якими проблемами, будь ласка, повідомте мене в коментарях.
— — — — — — — — — — — — — — — — — — — — —
Залишайтеся на зв'язку — @syedamahamfahim 🐬
— — — — — — — — — — — — — — — — — — — — —
Перекладено з: How to Set Up a Dockerized Development Environment for Django with PostgreSQL and pgAdmin