Як налаштувати Docker-оточення для розробки з Django, PostgreSQL та pgAdmin

текст перекладу

Налаштування середовища розробки може здатися складним, особливо коли потрібно працювати з кількома інструментами, такими як бекенд, база даних і системи управління. Docker спрощує цей процес, утримуючи все організованим у контейнерах.

У цьому посібнику я покажу, як налаштувати Django, PostgreSQL та pgAdmin з Docker, щоб це було просто і без зайвих турбот.

pic

Як налаштувати Docker-середовище розробки для Django з PostgreSQL та pgAdmin

Результати

Налаштування включає три основні частини:

  1. Django — бекенд
  2. PostgreSQL — база даних
  3. pgAdmin4 для управління базою даних.

Налаштування Docker та перевірка

Я припускаю, що Docker вже встановлений і працює так, як очікується.

Перевірте це за допомогою команди

docker

Якщо ваш вивід виглядає ось так, це означає, що він встановлений і працює:

pic

docker

Структура папок

Ось як виглядає моя структура папок

pic

структура папок

У папці django-app ви знайдете мій код для Django додатка та Dockerfile.

Чому Dockerfile окремо?

Тому що у мого Django додатка є власні залежності, які потрібно встановити.

Dockerfile для Django додатка

Ось як виглядає мій Dockerfile:

pic

Це означає, що я вже створив додаток Django та налаштував деякі пакети, наприклад, PostgreSQL.

Docker-compose.yml файл

Тепер нам потрібно три різні контейнери для кожної служби

  1. Служба Postgres

pic

У цій службі я завантажую офіційний образ postgres:13 з Docker Hub, де 13 вказує на версію PostgreSQL.

  • Назва контейнера: rsa_postgres-container.
  • Середовище: облікові дані PostgreSQL беруться з файлу .env, де вони визначені.
  • Healthcheck: перевіряє, чи існують користувач і база даних.
  • restart: контейнер буде завжди перезапускатися навіть після перезавантаження сервера.

2. Служба pgadmin

pic

pgadmin

служба django

pic

Томи

pic

Django додаток копіюється в Docker, тому я тільки зберігаю свою базу даних і дані pgAdmin, ось чому я створив для них томи.

Повний docker-compose.yml

pic

Побудова та запуск контейнерів

Тепер спершу я побудую контейнер, а потім запущу його, щоб переконатися, що немає проблем.

1. Побудова контейнерів

i. Виконайте команду для побудови контейнерів: Відкрийте термінал і виконайте наступну команду:

docker-compose build

Ця команда побудує Docker контейнери відповідно до вашого файлу docker-compose.yml.

Після завершення процесу ви побачите щось подібне до цього:

pic

docker-compose build

ii. Перевірка, чи побудовані контейнери: Коли ви побачите (11/11) і повідомлення про успіх, це означає, що контейнери побудовані успішно. Щоб перевірити, відкрийте Docker Desktop:

pic

Docker Desktop

У розділі web_app ви повинні побачити 3 контейнери в списку. Спочатку контейнери можуть бути сірими, оскільки вони ще не були запущені.

2. Запуск контейнерів

Тепер я покажу вам два способи запустити контейнери.

**i.
текст перекладу

Запуск усіх контейнерів одночасно (не рекомендовано): Щоб запустити всі контейнери одночасно, виконайте наступну команду:

docker-compose up

Виведення буде схоже на це:

pic

docker-compose up

Виведення покаже дані всіх сервісів одночасно, що ускладнить пошук помилок, якщо вони виникнуть у будь-якому з сервісів. Тому рекомендовано відкривати окремі термінали для кожного сервісу, щоб переконатися, що кожен працює коректно.

ii. Запуск окремих контейнерів: Ось як це виглядає в терміналі VSCode (кожен термінал для різних сервісів):

pic

VSCode terminal

Примітка: я перейменував ці термінали для зручності доступу і використання.

Тепер давайте запустимо кожен сервіс по черзі.

a. PostgreSQL база даних

docker-compose up postgres

Ви побачите виведення, подібне до цього:

pic

docker-compose up postgres

Це запустить вашу PostgreSQL базу даних.

b. pgAdmin (UI для управління базою даних)

Щоб запустити pgAdmin (для доступу до вашої бази даних через UI):

docker-compose up pgadmin

Ви побачите виведення, подібне до цього:

pic

docker-compose up pgadmin

Ви можете отримати доступ до інтерфейсу pgAdmin за адресою: http://localhost:5050/browser/. Коли ви побачите цю сторінку входу, це означає, що ваша PostgreSQL база даних працює коректно.

pic

pgAdmin

c. Django додаток

Щоб запустити Django додаток:

docker-compose up django

pic

docker-compose up django

Отримайте доступ до сторінки адміністрування Django за адресою: http://127.0.0.1:8000/admin/

Коли з’явиться сторінка входу, це означає, що ваш Django додаток працює успішно:

pic

Сторінка адміністрування Django

Вітаємо! Ваші контейнери Django, PostgreSQL та SQL працюють бездоганно.

Підключення PostgreSQL до pgAdmin серверу в (Docker сервері)

Тепер, щоб отримати доступ до нашої бази даних в pgAdmin, потрібно підключити PostgreSQL до сервера pgAdmin.

  1. Доступ до pgAdmin

http://localhost:5050/login?next=/browser/

Ось так:

pic

pgAdmin

Використовуйте облікові дані, які ви зберегли в .env файлі, ось мої:

Ви потрапите на цю сторінку:

pic

2. Створення нового сервера в pgAdmin: Клацніть правою кнопкою миші на Servers і виберіть Create -> Server

pic

server

У спливаючому вікні надайте ім’я серверу (тобто
текст перекладу

реальнийнерухомістьавтоматизація_сервер).

pic

Перейдіть на вкладку "Connections", ви побачите, що вона питає про хост

pic

Connections tab

Отже, щоб знайти наш хост, потрібно потрапити в контейнер Postgres, (переконайтеся, що ваш контейнер PostgreSQL працює)

Щоб отримати хост, відкрийте новий термінал і знайдіть контейнер PostgreSQL

docker ps -q --filter "name=rsa_postgres-container"

Тут rsa_postgres-container — це ім'я мого контейнера

Виведення буде таким

pic

container ID

Тут 88661ss0d14b — це мій контейнер

Тепер ми використовуємо ID контейнера, щоб знайти IP-адресу:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' your_find_id

Ось так

pic

IP address

Це означає, що це IP-адреса мого контейнера.

c. Введення даних для підключення: Використовуйте адресу хоста з попереднього кроку і додайте до PostgreSQL. Для імені користувача та пароля використовуйте облікові дані з файлу .env (наприклад, airflow).

pic

.env

pic

.env

Залиште інші поля за замовчуванням.

d. Створення нової бази даних: Розгорніть ваш сервер, клацніть правою кнопкою на "Databases" і виберіть "Create -> Database".

pic

будь ласка, використовуйте ті ж облікові дані, що й у файлі .env

pic

db

залиште інші вкладки без змін.

e. Перевірка підключення: Після введення даних натисніть "Save". Тепер ви повинні побачити сервер у pgAdmin. Ось так

pic

Міграції Django

Останній крок — переконатися, що Django і PostgreSQL працюють правильно.

  1. Перевірка, чи працює контейнер Django: Перевірте Docker Desktop або термінал, щоб побачити зелений статус, що означає, що контейнер працює на порту 8000:8000.

pic

Container

2. Доступ до Django додатку через Термінал: Тепер відкрийте новий термінал і введіть цю команду, щоб потрапити в додаток Django:

docker exec -it rsa_django-app-container bash

Тепер, коли ви потрапите в додаток Django, ви зможете встановлювати пакети або виконувати міграції. Ваш термінал має виглядати ось так

pic

rsadjango-app-container bash_

Тепер ви в контейнері Django. Для того, щоб встановити нові пакети або виконати міграції, використовуйте вищезгадану команду, щоб потрапити в цей контейнер.

3. Виконання міграцій: Тепер давайте виконаємо міграцію за допомогою команди

python manage.py migrate

Тепер,

python manage.py makemigrations

pic

makemigrations

Перевіримо це в pgAdmin. Перейдіть в pgAdmin і перевірте сервер

pic

pgAdmin

Тепер ви побачите всі мої таблиці Django тут.

Бонус

Припускаємо, що ви вже підключили PostgreSQL до Django, якщо ні, виконайте наступні кроки:

  1. Встановіть пакет psycopg2-binary
  2. Створіть новий файл у вашій директорії проекту (де знаходиться settings.py) і додайте наступне:

pic

Зверніть увагу, що ці значення беруться з файлу .env, і застосовується декуплінг для їх відокремлення.

3.
текст перекладу

Тепер викличте це у своєму файлі settings.py і змініть базу даних

pic

setting.py

Висновок:

Я перевірив цей блог, протестувавши налаштування і створивши додаток знову. Все працює без помилок, але якщо ви зіткнулися з будь-якими проблемами, будь ласка, повідомте мене в коментарях.

— — — — — — — — — — — — — — — — — — — — —

Залишайтеся на зв'язку — @syedamahamfahim 🐬

— — — — — — — — — — — — — — — — — — — — —

Перекладено з: How to Set Up a Dockerized Development Environment for Django with PostgreSQL and pgAdmin

Leave a Reply

Your email address will not be published. Required fields are marked *