AIOgram3 2. Точка входа
Для запуска бота, нам необходима
В этом файле находится главная функция, основные импорты, а так же регистрации действий пользователя.
Обо всём по порядку.
Начнём с простого эхо-бота создав точку входа.
В корне проекта создаём файл
Напишем условие запуска:
В первой строке мы импортировали библиотеку
Третья строка - это условие, которое проверяет, запущен ли данный скрипт как самостоятельное приложение. Если данный скрипт является основным файлом, то
В ней мы передаём функцию start(), которую начнём писать в следующем посте.
Таким образом, при выполнении данного кода, условие
Файлы к посту, можно получить в боте по коду: 389064
Пост на сайте.
Поддержать канал.
#aiogram #python #точка_входа #main #asyncio
Для запуска бота, нам необходима
точка входа, в качестве которой будет файл main.py.В этом файле находится главная функция, основные импорты, а так же регистрации действий пользователя.
Обо всём по порядку.
Начнём с простого эхо-бота создав точку входа.
В корне проекта создаём файл
main.py.Напишем условие запуска:
import asyncioДавайте разберём, что это такое и как работает.
if __name__ == '__main__':
asyncio.run(start())
В первой строке мы импортировали библиотеку
asyncio входящую в состав стандартной библиотеки. Она предоставляет простой и эффективный способ написания кода, который может обрабатывать множество задач одновременно, без блокировки потока исполнения. asyncio использует цикл событий, который обрабатывает различные задачи асинхронно и эффективно управляет ресурсами системы.Третья строка - это условие, которое проверяет, запущен ли данный скрипт как самостоятельное приложение. Если данный скрипт является основным файлом, то
__name__ примет значение __main__ , и условие входит в силу.asyncio.run() в четвёртой строке - это функция, которая запускает цикл событий asyncio, являющийся сердцем асинхронного программирования в Python. Она выполняет переданную ей корутину (функцию) и обрабатывает все события, пока она не завершится. В ней мы передаём функцию start(), которую начнём писать в следующем посте.
Таким образом, при выполнении данного кода, условие
if проверяет, запущен ли скрипт как основной файл, и если это так, используется asyncio.run() для запуска функции start(), содержащей асинхронный код.Файлы к посту, можно получить в боте по коду: 389064
Пост на сайте.
Поддержать канал.
#aiogram #python #точка_входа #main #asyncio
👍3
Поправка к посту Django 3. Базовая конфигурация
В посте допустил ошибку в описании путей к
Было так:
А должно быть так:
В первом варианте была передача пути от корня файловой системы, а нам нужен относительный путь от папки проекта.
Извиняюсь и прошу тех, кто повторял за мной, поправить данный момент.
В посте допустил ошибку в описании путей к
STATIC_ROOT и MEDIA_ROOT.Было так:
STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / '/static/'
MEDIA_URL = 'media/'
MEDIA_ROOT = BASE_DIR / '/media/'
А должно быть так:
STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'static/'
MEDIA_URL = 'media/'
MEDIA_ROOT = BASE_DIR / 'media/'
В первом варианте была передача пути от корня файловой системы, а нам нужен относительный путь от папки проекта.
Извиняюсь и прошу тех, кто повторял за мной, поправить данный момент.
👍2
AIOgram3 3. Основная функция
В прошлом посте мы написали точку входа и запуск из неё функции
Именно написанием этой функции и займёмся.
Между импортом и точкой входа, объявим функцию:
Не забываем про правила написания чистого кода - PEP8. Расставим по две пустых строки перед и после функции.
Как вы наверняка заметили, вместо стандартного
Ключевое слово
В теле функции объявим переменную
Далее нам необходимо создать объект класса
И наконец, необходимо запустить диспетчер в режиме "polling". Так называется бесконечный цикл "опроса" сервера(в нашем случае, сервера Telegram), на предмет новых сообщений или событий.
В следующем посте, сделаем эхо-бота и проверим работу.
Файлы к посту, можно получить в боте по коду: 627598
Пост на сайте.
Поддержать канал.
#aiogram #python #main #start #try_except
В прошлом посте мы написали точку входа и запуск из неё функции
start().Именно написанием этой функции и займёмся.
Между импортом и точкой входа, объявим функцию:
async def start():
Не забываем про правила написания чистого кода - PEP8. Расставим по две пустых строки перед и после функции.
Как вы наверняка заметили, вместо стандартного
def, мы используем async def.Ключевое слово
async указывает на то, что эта функция является корутиной, то есть функцией, которая может приостанавливать свое выполнение в течение определенного времени, чтобы выполнять другие задачи.В теле функции объявим переменную
bot и присвоим ей объект класса Bot, необходимый для взаимодействия с API Telegram: from aiogram import BotВ параметр
bot = Bot(token='ваш_токен')
token передаём полученный от BotFather токен. Стоит отметить, такая явная передача токена боту, является не безопасной. В следующих постах мы изменим передачу токена, а когда дойдём до развёртывания бота на сервере, я расскажу как правильно передавать секреты в бота.Далее нам необходимо создать объект класса
Dispatcher: from aiogram import Dispatcher
dp = Dispatcher()
Dispatcher() создает поток для обработки всех входящих запросов, проверяет тип запроса, извлекает все необходимые данные из запроса и передает их в соответствующий обработчик.И наконец, необходимо запустить диспетчер в режиме "polling". Так называется бесконечный цикл "опроса" сервера(в нашем случае, сервера Telegram), на предмет новых сообщений или событий.
try:В данном блоке используется конструкция
await dp.start_polling(bot)
finally:
await bot.session.close()
try-finally. Диспетчер будет работать до тех пор, пока не будет остановлен. После остановки диспетчера, будет выполнена команда закрытия сессии и выход их программы.В следующем посте, сделаем эхо-бота и проверим работу.
Файлы к посту, можно получить в боте по коду: 627598
Пост на сайте.
Поддержать канал.
#aiogram #python #main #start #try_except
👍2
AIOgram3 4. Эхо-бот
Для того, что бы сделать повторяющего за нами бота, давайте создадим функцию
Между импортами и функцией
В качестве ответа пользователю, мы отправляем его же сообщение. Текст ответа получим из переменной
Для того, что бы сделать повторяющего за нами бота, давайте создадим функцию
echo.Между импортами и функцией
start() создадим функцию:from aiogram.types import MessageВ теле функции напишем код ответа на сообщение:
async def echo(message: Message):
await message.answer(message.text)Переменная
message, переданная в функцию, является объектом класса Message. Мы, используя доступный нам метод answer, отвечаем пользователю, отправившему сообщение боту.В качестве ответа пользователю, мы отправляем его же сообщение. Текст ответа получим из переменной
message воспользовавшись ещё одним методом text, возвращающим текстовое представление данных.👍3❤1
Также, стоит упомянуть про
Ключевое слово
Таким образом,
Теперь нам необходимо зарегистрировать данную функцию.
В функции
Настало время запустить бота и проверить его работу. Запускаем файл
Поскольку у нас не инициализирован логгер и нет оповещения о запуске, то в терминале будет пусто, однако, если мы напишем боту... То он начнёт нам отвечать!
Для остановки бота, если он запущен в PyCharm, достаточно нажать на остановку.
Если бот запущен в терминале, то для остановки необходимо выполнить сочетание клавиш
Поздравляю, бот работает. В следующем посте начнём разграничивать функционал по модулям.
Файлы к посту, можно получить в боте по коду: 902691
Пост на сайте.
Поддержать канал.
#aiogram #python #эхо_бот #echo_bot
await.Ключевое слово
await используется только внутри асинхронной функции и только для вызова асинхронных операций. Оно используется с операциями, которые могут занять некоторое время. Поскольку эти операции требуют времени на выполнение, программа может продолжить выполнение других задач в это время, а затем вернуться к исходной задаче только после завершения асинхронной операции.Таким образом,
await в данном случае означает, что программа должна дождаться отправки сообщения, прежде чем продолжить дальнейшее выполнение кода.Теперь нам необходимо зарегистрировать данную функцию.
В функции
start(), после инициализации диспетчера, но до блока try-finally, регистрируем функцию, на приём всех сообщений:dp.message.register(echo)Обратите внимание! При регистрации функции, мы пишем только её название, без круглых скобок!
Настало время запустить бота и проверить его работу. Запускаем файл
main.py.Поскольку у нас не инициализирован логгер и нет оповещения о запуске, то в терминале будет пусто, однако, если мы напишем боту... То он начнёт нам отвечать!
Для остановки бота, если он запущен в PyCharm, достаточно нажать на остановку.
Если бот запущен в терминале, то для остановки необходимо выполнить сочетание клавиш
CTRL+C.Поздравляю, бот работает. В следующем посте начнём разграничивать функционал по модулям.
Файлы к посту, можно получить в боте по коду: 902691
Пост на сайте.
Поддержать канал.
#aiogram #python #эхо_бот #echo_bot
👍2❤1
Поговорим.
О пути, планах, стремлениях.
Приветствую.
Давайте поговорим с вами в комментариях.
Расскажите о вашем пути. Новичок или специалист? Или только-только притрагиваетесь к интересному миру программирования.
Какие у вас планы? Быть может амбиции огого!, через год быть топ-менеджером Газпрома, а может и планов нет, просто хобби?
Быть может у вас есть достижения, которыми вы хотите поделиться?
В общем, пишите, интересно будет почитать и обсудить.
О пути, планах, стремлениях.
Приветствую.
Давайте поговорим с вами в комментариях.
Расскажите о вашем пути. Новичок или специалист? Или только-только притрагиваетесь к интересному миру программирования.
Какие у вас планы? Быть может амбиции огого!, через год быть топ-менеджером Газпрома, а может и планов нет, просто хобби?
Быть может у вас есть достижения, которыми вы хотите поделиться?
В общем, пишите, интересно будет почитать и обсудить.
👍3
Оглавление для серии постов по Docker
Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.
Docker 1. Подготовка Windows
Docker 2.1 Установка Docker Desktop на Windows
Docker 2.2 Установка Docker на Linux
Docker 3. Контейнер с PostgreSQL
Docker 4. Взаимодействие с контейнером PostgreSQL
Docker 5.1 Почтовый сервер на Docker Mailserver - настройка домена
Docker 5.2 Почтовый сервер на Docker Mailserver - настройка и запуск
Docker 6. Собственный GIT-сервис - Гид по быстрому запуску Gitea на вашем сервере!
Docker 7. Разворачивание Telegram-бота в Docker на VPS
Docker 8. Разворачивание Django-проекта в Docker compose
Docker. Запуск бота-автоответчика по готовому образу
Docker ушёл из РФ! Как это исправить?
#docker #оглавление
Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.
Docker 1. Подготовка Windows
Docker 2.1 Установка Docker Desktop на Windows
Docker 2.2 Установка Docker на Linux
Docker 3. Контейнер с PostgreSQL
Docker 4. Взаимодействие с контейнером PostgreSQL
Docker 5.1 Почтовый сервер на Docker Mailserver - настройка домена
Docker 5.2 Почтовый сервер на Docker Mailserver - настройка и запуск
Docker 6. Собственный GIT-сервис - Гид по быстрому запуску Gitea на вашем сервере!
Docker 7. Разворачивание Telegram-бота в Docker на VPS
Docker 8. Разворачивание Django-проекта в Docker compose
Docker. Запуск бота-автоответчика по готовому образу
Docker ушёл из РФ! Как это исправить?
#docker #оглавление
🔥6👍1
Docker 1. Подготовка Windows
Перед установкой
Docker подразумевает использование ядра Linux той системы, на которой он запущен, что избавляет от необходимости запуска виртуальных машин. Однако с Windows ситуация несколько отличается.
Так как Windows построена на совершенно иной архитектуре, для работы Docker необходимо либо использование виртуальной машины, либо нововведение в Windows 10 -
Это не виртуальная машина в прямом смысле. WSL запускает ядро Linux прямо внутри Windows. За счёт этого значительно экономятся ресурсы компьютера и повышается скорость работы Linux в системе.
Но так или иначе, для работы WSL требуется включение виртуализации.
Это можно сделать в BIOS, поискав информацию в интернете по вашей модели материнской платы/ноутбука. Стоит отметить, если у вас установлен и работает VirtualBox или, допустим. эмулятор Android, производить действия по включению не требуется, значит всё активировано и работает.
Перед установкой
Docker Desktop необходимо подготовить систему.Docker подразумевает использование ядра Linux той системы, на которой он запущен, что избавляет от необходимости запуска виртуальных машин. Однако с Windows ситуация несколько отличается.
Так как Windows построена на совершенно иной архитектуре, для работы Docker необходимо либо использование виртуальной машины, либо нововведение в Windows 10 -
Windows Subsystem for Linux, он же WSL.Это не виртуальная машина в прямом смысле. WSL запускает ядро Linux прямо внутри Windows. За счёт этого значительно экономятся ресурсы компьютера и повышается скорость работы Linux в системе.
Но так или иначе, для работы WSL требуется включение виртуализации.
Это можно сделать в BIOS, поискав информацию в интернете по вашей модели материнской платы/ноутбука. Стоит отметить, если у вас установлен и работает VirtualBox или, допустим. эмулятор Android, производить действия по включению не требуется, значит всё активировано и работает.
👍2
Далее необходимо включить подсистему Windows для Linux.
Запустите PowerShell от имени администратора. сделать это можно в меню "Пуск" > PowerShell > щелкните правой кнопкой мыши > Запуск от имени администратора.
И выполните следующую команду:
После перезагрузки, необходимо скачать и установить пакет обновления для WSL2.
Скачать пакет можно по ссылке: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
По завершении установки, снова запустите PowerShell и выполните следующую команду, для выбора WLS2 в качестве версии по умолчанию:
Отмечу от себя один момент. Не пренебрегайте установкой обновлений Windows. Именно там будут приходить обновления для WSL2. Да и в целом, обновления системы важная часть стабильной работы.
Файлы к посту, можно получить в боте по коду: 649348
Пост на сайте.
Поддержать канал.
#docker #windows #wsl #wsl2 #подготовка
Запустите PowerShell от имени администратора. сделать это можно в меню "Пуск" > PowerShell > щелкните правой кнопкой мыши > Запуск от имени администратора.
И выполните следующую команду:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartА затем обновить включенный WSL до WSL2 следующей командой:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartПосле этого перезапустите компьютер для завершения установки WLS2.
После перезагрузки, необходимо скачать и установить пакет обновления для WSL2.
Скачать пакет можно по ссылке: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
По завершении установки, снова запустите PowerShell и выполните следующую команду, для выбора WLS2 в качестве версии по умолчанию:
wsl --set-default-version 2На этом подготовка завершена.
Отмечу от себя один момент. Не пренебрегайте установкой обновлений Windows. Именно там будут приходить обновления для WSL2. Да и в целом, обновления системы важная часть стабильной работы.
Файлы к посту, можно получить в боте по коду: 649348
Пост на сайте.
Поддержать канал.
#docker #windows #wsl #wsl2 #подготовка
👍2
Docker 2.1 Установка Docker Desktop на Windows
Подготовка позади, приступаем к установке Docker Desktop на Windows.
Скачиваем установщик по ссылке: https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
Откроется одно из самых минималистичных окон установки.
Там будет два пункта:
- Use WSL 2 instead of Hyper-V - обязательный параметр, позволит запускать контейнеры через WSL, а не через создание виртуальной машины.
- Add shortcut to desktop - добавлять ярлык на рабочий стол или нет, выбирайте по желанию.
Отметив первую галочку, нажимаем "Ok".
Начнётся процесс установки. Ждём.
По завершении установки нажимаем на большую синюю кнопку с надписью "Close".
Установка завершена.
Подготовка позади, приступаем к установке Docker Desktop на Windows.
Скачиваем установщик по ссылке: https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
Откроется одно из самых минималистичных окон установки.
Там будет два пункта:
- Use WSL 2 instead of Hyper-V - обязательный параметр, позволит запускать контейнеры через WSL, а не через создание виртуальной машины.
- Add shortcut to desktop - добавлять ярлык на рабочий стол или нет, выбирайте по желанию.
Отметив первую галочку, нажимаем "Ok".
Начнётся процесс установки. Ждём.
По завершении установки нажимаем на большую синюю кнопку с надписью "Close".
Установка завершена.
👍3
Запустим Docker Desktop.
При первом запуске он попросит нас прочитать условия использования. Соглашаемся.
Далее будет опросник, можете поучавствовать, но я выбрал Skip.
Окно Docker Desktop можно закрыть. Убедитесь, что после закрытия окна, Docker остался в системном трее.
Пусть мы и установили Docker Desktop, работать мы будем в терминале, а именно в PowerShell.
Давайте убедимся, в корректности установки.
Запустим PowerShell и выполним команду:
Файлы к посту, можно получить в боте по коду: 743896
Пост на сайте.
Поддержать канал.
#docker #windows #установка #docker_desctop
При первом запуске он попросит нас прочитать условия использования. Соглашаемся.
Далее будет опросник, можете поучавствовать, но я выбрал Skip.
Окно Docker Desktop можно закрыть. Убедитесь, что после закрытия окна, Docker остался в системном трее.
Пусть мы и установили Docker Desktop, работать мы будем в терминале, а именно в PowerShell.
Давайте убедимся, в корректности установки.
Запустим PowerShell и выполним команду:
docker --versionВ ответ должны получить строку с текущей версией Docker. У меня это:
Docker version 24.0.2, build cb74dfcТеперь проверим работу контейнеров на стандартном контейнере
Hello-world. В терминале выполним команду:docker run hello-worldНачнётся процесс скачивания и запуска образа. Затем в выводе должно появиться много текста, начинающегося с "Hello from Docker!".
Файлы к посту, можно получить в боте по коду: 743896
Пост на сайте.
Поддержать канал.
#docker #windows #установка #docker_desctop
Docker 2.2 Установка Docker на Linux
Если с Windows приходится повозится для установки Docker, то с линуксом всё просто до безобразия.
Я использую Debian 12 и всё, что напишу ниже будет относиться к нему. Команды для вашего дистрибутива, можно найти в официальной документации Docker по ссылке: https://docs.docker.com/engine/install/
Если с Windows приходится повозится для установки Docker, то с линуксом всё просто до безобразия.
Я использую Debian 12 и всё, что напишу ниже будет относиться к нему. Команды для вашего дистрибутива, можно найти в официальной документации Docker по ссылке: https://docs.docker.com/engine/install/
👍3
Все действия выполняются в терминале. Откроем его.
Для начала удалим пакеты во избежание возможных конфликтов, выполнив следующую команду:
В следующем посте, расскажу, как запустить контейнер с PostgreSQL.
Файлы к посту, можно получить в боте по коду: 695131
Пост на сайте.
Поддержать канал.
#docker #установка #lunux #debian
Для начала удалим пакеты во избежание возможных конфликтов, выполнив следующую команду:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; doneДалее обновляем список доступных пакетов и устанавливаем поддержку HTTPS-репозиториев:
sudo apt-get updateУстанавливаем ключи сертификатов:
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyringsДобавляем репозиторий:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \Снова обновляем список доступных пакетов и устанавливаем Docker:
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get updateТеперь проверим работу контейнеров на стандартном контейнере
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Hello-world. В терминале выполним команду:sudo docker run hello-worldНачнётся процесс скачивания и запуска образа. Затем в выводе должно появиться много текста, начинающегося с "Hello from Docker!".
В следующем посте, расскажу, как запустить контейнер с PostgreSQL.
Файлы к посту, можно получить в боте по коду: 695131
Пост на сайте.
Поддержать канал.
#docker #установка #lunux #debian
👍3
Docker 3. Контейнер с PostgreSQL
После всех подготовок и установок, наконец-то переходим к полезной практике.
Сегодня мы запустим Docker-контейнер с PostgreSQL.
Для этого нам нужна всего одна команда, но перед этим, мы создадим папку, в которой будут храниться файлы базы данных.
Поскольку, данные в контейнере сбрасываются до начального состояния образа, при перезапуске контейнера, нам нужна локальная папка для хранения файлов базы. Создать папку можно в любом месте, главное, что бы в пути не было кириллических символов. У меня это
После всех подготовок и установок, наконец-то переходим к полезной практике.
Сегодня мы запустим Docker-контейнер с PostgreSQL.
Для этого нам нужна всего одна команда, но перед этим, мы создадим папку, в которой будут храниться файлы базы данных.
Поскольку, данные в контейнере сбрасываются до начального состояния образа, при перезапуске контейнера, нам нужна локальная папка для хранения файлов базы. Создать папку можно в любом месте, главное, что бы в пути не было кириллических символов. У меня это
D:\psql.👍1
Команда запуска:
-
-
-
Внимание! Если у вас установлен PostgreSQL в системе вне Docker, значит порт 5432 занят. Изменяем <порт_вне_контейнера> на другой, например, 5433.
-
-
-
-
-
-
-
- В самом конце команды определяем используемый базовый образ и его версию. Без указания версии, будет использоваться последняя доступная версия. В нашем случае, мы будем использовать официальный Docker-образ
Давайте выполним эту большую команду в терминале. Для запуска на Windows, убедитесь, что у вас запущен Docker Desktop
Начнётся скачивание базового образа из
Для остановки контейнера, нужно выполнить команду:
Файлы к посту, можно получить в боте по коду: 921886
Пост на сайте.
Поддержать канал.
#docker #postgresql #postgres #sql #установка #контейнер
docker run --name postgres-db -p 5432:5432 -e POSTGRES_USER=username -e POSTGRES_PASSWORD=password -e POSTGRES_DB=testdb -e PGDATA=/var/lib/postgresql/data/pgdata -v D:\psql:/var/lib/postgresql/data -d postgres:15.2Разберём по порядку:
-
docker run - команда Docker для запуска контейнера.-
--name - параметр определяющий имя контейнера для более удобного взаимодейсвтия с ним, в нашем случае это postgres-db.-
-p - параметр publish, определяет какой внутренний порт будет транслироваться из контейнера. Синтаксис <порт_вне_контейнера>:<порт_в_контейнере>. В нашем случае это стандартный порт PostgreSQL - 5432.Внимание! Если у вас установлен PostgreSQL в системе вне Docker, значит порт 5432 занят. Изменяем <порт_вне_контейнера> на другой, например, 5433.
-
-e - параметр передающий в контейнер переменные окружения. В нашем случае это:-
POSTGRES_USER - определяет имя пользователя БД.-
POSTGRES_PASSWORD - определяет пароль БД.-
POSTGRES_DB - определяет название БД.-
PGDATA - определяет место, где БД будет хранить данные.-
-v - параметр volume, необходим для подключения внешней(вне контейнера) директории, по внутреннему(в контейнере) пути. В моём случае это - D:\psql:/var/lib/postgresql/data, где D:\psql директория на моём компьютере, а /var/lib/postgresql/data место хранения данных в контейнере.-
-d - параметр сообщающий докеру, что мы хотим запустить контейнер в режиме демона, т.е. в фоновом режиме.- В самом конце команды определяем используемый базовый образ и его версию. Без указания версии, будет использоваться последняя доступная версия. В нашем случае, мы будем использовать официальный Docker-образ
postgres версии 15.2Давайте выполним эту большую команду в терминале. Для запуска на Windows, убедитесь, что у вас запущен Docker Desktop
Начнётся скачивание базового образа из
Docker Hub. После скачивания и запуска, терминал вернётся в режим ввода пользователя. Если не было никаких ошибок, значит контейнер запущен успешно. Убедиться в этом можно выполнив команду:docker ps -aМы должны увидеть два контейнера.
Hello-world, который мы запускали в прошлом посте и наш свеже-созданный postgres-db. В колонке STATUS в строке с БД, должно быть написано Up X minutes. Контейнер запущен и функционирует корректно.Для остановки контейнера, нужно выполнить команду:
docker stop postgres-dbА для запуска остановленного контейнера:
docker start postgres-dbВ следующем посте, расскажу про способы подключения к БД.
Файлы к посту, можно получить в боте по коду: 921886
Пост на сайте.
Поддержать канал.
#docker #postgresql #postgres #sql #установка #контейнер
🔥3👍1
Docker 4. Взаимодействие с контейнером PostgreSQL
Контейнер запустили, теперь давайте научимся с ним взаимодействовать.
Самый прямой способ взаимодействия, это зайти в контейнер и подключиться к CLI(Command Line Interface) PostgreSQL. Проще говоря, подключиться к БД в терминале.
Для этого необходимо в терминале выполнить следующую команду:
Для варианта запуска, показанного в прошлом посте, строка будет выглядеть так:
Контейнер запустили, теперь давайте научимся с ним взаимодействовать.
Самый прямой способ взаимодействия, это зайти в контейнер и подключиться к CLI(Command Line Interface) PostgreSQL. Проще говоря, подключиться к БД в терминале.
Для этого необходимо в терминале выполнить следующую команду:
docker exec -it <container-name> psql -U <dataBaseUserName> <dataBaseName>
Для варианта запуска, показанного в прошлом посте, строка будет выглядеть так:
docker exec -it postgres-db psql -U username testdb
Подробнее про каждый пункт:
-
-
-
-
-
В итоге команда должна выглядеть следующим образом:
Для выхода достаточно ввести команду
Другой способ подключиться к БД, это использовать менеджеры баз данных.
Таких программ много, например PgAdmin, DBeaver и другие.
Установив любой менеджер поддерживающий PostgreSQL, для подключения к БД необходимо указать следующие данные:
-
-
-
Точно так же, можно использовать запущенную БД в наших проектах, например в Django:
Файлы к посту, можно получить в боте по коду: 684611
Пост на сайте.
Поддержать канал.
#docker #postgresql #postgres #sql #контейнер
-
docker exec - комманда позволяющая зайти в контейнер и выполнить указанную далее команду.-
-it - параметр, сообщающий докеру, что мы хотим подключиться в интерактивном режиме. Бывают случаи, когда терминал занят другим приложением, например выводом запущенного бота и чтобы выйти из контейнера не завершая работу запущенного приложения, необходимо нажать сочетание клавиш CTRL+Q+CTRL+P-
<container-name> - имя или идентификатор контейнера, к которому хотим подключиться-
psql - команда для выполнения в контейнере. В нашем случае это подключение к PostgreSQL в консоли.-
-U <dataBaseUserName> <dataBaseName> - параметры предыдущей команды. Тут мы передаём флаг -U, указывающий, что далее будет введено имя пользователя для авторизации и имя базы данных к которой необходимо подключиться.В итоге команда должна выглядеть следующим образом:
docker exec -it postgres-db psql -U username testdbТак, мы попадём в консольный интерфейс PostgreSQL. Можно работать с БД.
Для выхода достаточно ввести команду
exit.Другой способ подключиться к БД, это использовать менеджеры баз данных.
Таких программ много, например PgAdmin, DBeaver и другие.
Установив любой менеджер поддерживающий PostgreSQL, для подключения к БД необходимо указать следующие данные:
-
host: localhost
- port: 5432
- username: username-
password: password-
database: testdbТочно так же, можно использовать запущенную БД в наших проектах, например в Django:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': testdb,
'USER': username,
'PASSWORD': password,
'HOST': 'localhost',
'PORT': '5432',
}
}
На этом всё. Если возникнут вопросы по данной теме, не стесняйтесь задавать их в комментариях, обязательно постараюсь ответить.Файлы к посту, можно получить в боте по коду: 684611
Пост на сайте.
Поддержать канал.
#docker #postgresql #postgres #sql #контейнер
👍2
Django 5. Инициализация приложения блога
Я не просто так назвал данный пост "Инициализация приложения блога". В Django, проектом считается сам установленный и инициализированный Django. Этим мы занимались во втором посте. А вот страницы сайта или отдельные модули называются приложениями. Именно созданием приложения мы займемся сегодня.
Для создания приложения необходимо в терминале выполнить команду:
В папке с проектом появилась директория
Я не просто так назвал данный пост "Инициализация приложения блога". В Django, проектом считается сам установленный и инициализированный Django. Этим мы занимались во втором посте. А вот страницы сайта или отдельные модули называются приложениями. Именно созданием приложения мы займемся сегодня.
Для создания приложения необходимо в терминале выполнить команду:
python manage.py startapp blog. Убедитесь, что в терминале вы находитесь в той же директории, что и файл manage.py. В дальнейшем я не буду заострять на этом внимание. В папке с проектом появилась директория
blog с набором пустых файлов приложения.🔥2
Пройдёмся по основным файлам приложения:
- Файл
- Папка
- Файл
- Файл
- В дальнейшем будут созданы и другие файлы разной функциональной направленности.
Приложение создано, но ещё не активировано. Для активации необходимо вернуться в файл
Первый параметр
Второй параметр
Третий параметр
Далее принято делать модели базы данных, но я несколько отойду от принятого. В следующем посте сделаем заготовку для главной страницы, она же, по началу будет выступать в роли заглушки сайта.
Файлы к посту, можно получить в боте по коду: 966714
Пост на сайте.
Поддержать канал.
#django #python #приложение
- Файл
admin.py - в данном файле будем указывать всё, что непосредственно связано с панелью администратора. В основном, это регистрация моделей.- Папка
migrations - в ней будут собираться файлы с описаниями миграций базы данных, относящихся именно к приложению.- Файл
models.py - в данном файле будем описывать модели и менеджеров базы данных.- Файл
views.py - в данном файле описываются представления соответствующие страницам на сайте. - В дальнейшем будут созданы и другие файлы разной функциональной направленности.
Приложение создано, но ещё не активировано. Для активации необходимо вернуться в файл
settings.py и в параметр INSTALLED_APPS добавить строку с указанием конфигурации приложения.INSTALLED_APPS = [Как мы получили данную строку?
# Содержимое списка
# ...
'blog.apps.BlogConfig',
]
Первый параметр
blog - название приложения, указанное при его создании. Второй параметр
apps - указание на файл apps.py в директории приложения. Третий параметр
BlogConfig - указание на класс BlogConfig в упомянутом ранее файле.Далее принято делать модели базы данных, но я несколько отойду от принятого. В следующем посте сделаем заготовку для главной страницы, она же, по началу будет выступать в роли заглушки сайта.
Файлы к посту, можно получить в боте по коду: 966714
Пост на сайте.
Поддержать канал.
#django #python #приложение
👍3
Django 6. Базовый шаблон
Сегодня мы создадим базовый шаблон. В базовый шаблон прописывается то, что должно быть на всех страницах сайта. Подключаются все необходимые файлы стилей и скриптов, прописываются мета-теги.
Для создания шаблона, мы будем использовать CSS-фреймворк Bootstrap5.
Давайте его скачаем. Нам нужен CSS-файл и JS-файл.
CSS: https://bootswatch.com/5/lumen/bootstrap.css
JS: https://raw.githubusercontent.com/twbs/bootstrap/v5.3.0/dist/js/bootstrap.bundle.js
Если у вас в браузере, файл не скачивается, а открылся для просмотра, просто нажмите сочетание клавиш CTRL+S
Сегодня мы создадим базовый шаблон. В базовый шаблон прописывается то, что должно быть на всех страницах сайта. Подключаются все необходимые файлы стилей и скриптов, прописываются мета-теги.
Для создания шаблона, мы будем использовать CSS-фреймворк Bootstrap5.
Давайте его скачаем. Нам нужен CSS-файл и JS-файл.
CSS: https://bootswatch.com/5/lumen/bootstrap.css
JS: https://raw.githubusercontent.com/twbs/bootstrap/v5.3.0/dist/js/bootstrap.bundle.js
Если у вас в браузере, файл не скачивается, а открылся для просмотра, просто нажмите сочетание клавиш CTRL+S
👍3