Пример разворачивания сервера в контейнере Docker на Yandex Cloud#
В данном примере сервер пишет полученные сообщения в журнал и выводит их в консоль виртуальной машины
Перед началом работы необходимо:
Варианты запуска python webhook server:
- Создание сервера с использованием Yandex и docker-compose файла
- Создание сервера с использованием Docker
- Создание сервера с использованием docker-compose файла
1. Создать учетную запись в Яндекс#
- Необходимо создать яндекс аккаунт Яндекс
- Войти в Yandex cloud с помощью ранее созданного аккаунта.
Выйдет предложение создать первое облако, соглашаемся и создаем.
- Для работы с сервисами Яндекс необходимо произвести создание платежного аккаунта.
Необходимо привязать карту, будет списание и возврат небольшой суммы.
Внимание! При регистрации вы должны указывать карту той страны, резидентом которой вы являетесь.
Подробно можно прочитать здесь.
- По завершению регистрации ваш аккаунт должен иметь статус Active.
Подробно о пробном периоде и гранте можно прочитать здесь.
2. Сгенерировать SSH ключ#
Для создания ключа можно воспользоваться программами PuTTY или OpenSSH, мы будем использовать документацию Яндекса
Пример для Linux/MacOS:
-
В терминале выполнить команду
ssh-keygen -t ed25519
-
Укажите путь до папки в которую необходимо сохранить ключ и название ключа.
Для нашего примера: /Users/GreenAPI/ssh/yc_rsa
-
введите фразу (фактически пароль) для генерации ключа
-
в папке будут созданы два файла:
yc_rsa.pub - публичная часть ключа
yc_rsa - приватная часть ключа
Создание сервера с использованием Yandex и docker-compose файла#
-
Создание виртуальной машины
Все серверы -> инфраструктура и сеть -> Compute Cloud
-
Настройка виртуальной машины
Укажите имя, описание, зону доступности.
-
В пункте Выбор образа загрузочного диска выберете раздел Container Solution -> настроить -> Docker-compose, необходимо вставить код из файла docker-compose.yml
Далее происходит настройка мощности вашей виртуальной машины, значения выбираются в зависимости от ваших потребностей, но для примера работы сервера достаточно минимальных настроек.
Внимание! Значение поля прерываемая значит, что при перезапуске машины адрес сервера будет меняться.
-
Создайте сервисный аккаунт
Для управления машиной из командной строки необходима роль editor.
-
Укажите логин для пользователя виртуальной машины.
-
Откройте файл yc_rsa.pub и скопируйте содержимое в поле SSH ключ.
-
-
Доступ к виртуальной машине
-
Для получения доступа к виртуальной машине необходимо ввести команду в терминале компьютера
ssh [-i identity_file] [user@]host[:port]
identity_file - путь до приватной части SSH ключа
user - имя пользователя (логин - указывали в настройках)
host - внешний адрес хоста находится в свойствах вашей виртуальной машины
Для нашего примера команда будет иметь следующий вид:
ssh -i /Users/GreenAPI/ssh/yc_rsa green-api@84.252.137.226
-
После ввода команды может выйти сообщение "Подлинность хоста не может быть установлена, продолжаем" (yes), введите пароль (фраза, которую использовали при создании SSH ключа) командная строка изменится green-api@webhook-server:~$ (вы вошли на виртуальную машину).
-
-
Запуск контейнера
- При использовании данного метода виртуальная машина сама скачает все необходимые файлы и запустит контейнер.
Для просмотра уведомлений вам необходимо настроить ваш инстанс в консоли кабинета Green-Api на работу с сервером, указать внешний ip адрес машины и порт.
Адрес отправки уведомлений (URL) | http://158.160.6.161:8080 (пример)
- При использовании данного метода виртуальная машина сама скачает все необходимые файлы и запустит контейнер.
-
Просмотр полученных сообщений
-
Просмотреть запущенные контейнеры
docker ps
-
Посмотреть логи запущенного контейнера
docker logs [OPTIONS] CONTAINER - показать лог контейнера
CONTAINER - id или имя запущенного контейнера
OPTIONS - -f, --follow - опция непрерывного отслеживания вывода лога
(Ctrl + C - выход из режима)
Для нашего примера строка будет выглядеть так:
docker logs --follow webhookserver
-
Создание сервера с использованием Docker#
-
Создание виртуальной машины
Все серверы -> инфраструктура и сеть -> Compute Cloud
-
Настройка виртуальной машины
Укажите имя, описание, зону доступности.
-
В пункте Выбор образа загрузочного диска выберете раздел Операционные системы -> Ubuntu
В нашем примере мы будем запускать виртуальную машину с использованием OS Ubuntu
-
В пункте Диски и файловые хранилища укажите размер диска 10 Гб.
Далее происходит настройка мощности вашей виртуальной машины, значения выбираются в зависимости от ваших потребностей, но для примера работы сервера достаточно минимальных настроек.
Внимание! Значение поля прерываемая значит, что при перезапуске машины адрес сервера будет меняться.
-
Создайте сервисный аккаунт
Для управления машиной из командной строки необходима роль editor.
-
Укажите логин для пользователя виртуальной машины.
-
Откройте файл yc_rsa.pub и скопируйте содержимое в поле SSH ключ.
-
-
Доступ к виртуальной машине
-
Для получения доступа к виртуальной машине необходимо ввести команду в терминале компьютера
ssh [-i identity_file] [user@]host[:port]
identity_file - путь до приватной части SSH ключа
user - имя пользователя (логин - указывали в настройках)
host - внешний адрес хоста находится в свойствах вашей виртуальной машины
Для нашего примера команда будет иметь следующий вид:
ssh -i /Users/GreenAPI/ssh/yc_rsa green-api@84.252.137.226
-
После ввода команды может выйти сообщение "Подлинность хоста не может быть установлена, продолжаем" (yes), введите пароль (фраза, которую использовали при создании SSH ключа) командная строка изменится green-api@webhook-server:~$ (вы вошли на виртуальную машину).
-
-
Запуск контейнера
-
При использовании данного метода виртуальная машина не скачает и не установит docker, все необходимо сделать вручную.
Для просмотра уведомлений вам необходимо настроить ваш инстанс в консоли кабинета Green-Api на работу с сервером, указать внешний ip адрес машины и порт.
Адрес отправки уведомлений (URL) | http://158.160.6.161:8080 (пример)
-
Введите следующие команды в терминале виртуальной машины:
sudo apt-get update
sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) 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-compose-plugin
-
Необходимо войти в docker под своей учетной записью.
Для получения образа с сайта Docker Hub у вас должна быть учетная запись.
sudo docker login
sudo docker pull greenapi/whatsapp-api-webhook-server-python
-
Запуск контейнера в фоне:
sudo docker run --publish 8080:80 -itd greenapi/whatsapp-api-webhook-server-python
-
-
Просмотр полученных сообщений
-
Просмотреть запущенные контейнеры
sudo docker ps
-
Посмотреть логи запущенного контейнера
sudo docker logs [OPTIONS] CONTAINER - показать лог контейнера
CONTAINER - id или имя запущенного контейнера
OPTIONS - -f, --follow - опция непрерывного отслеживания вывода лога
(Ctrl + C - выход из режима)
Для нашего примера строка будет выглядеть так:
sudo docker logs --follow 29a6012fb262
-
Создание сервера с использованием docker-compose файла#
-
Создание виртуальной машины
Все серверы -> инфраструктура и сеть -> Compute Cloud
-
Настройка виртуальной машины
Укажите имя, описание, зону доступности.
-
В пункте Выбор образа загрузочного диска выберете раздел Операционные системы -> Ubuntu
В нашем примере мы будем запускать виртуальную машину с использованием OS Ubuntu
-
В пункте Диски и файловые хранилища укажите размер диска 10 Гб.
Далее происходит настройка мощности вашей виртуальной машины, значения выбираются в зависимости от ваших потребностей, но для примера работы сервера достаточно минимальных настроек.
Внимание! Значение поля прерываемая значит, что при перезапуске машины адрес сервера будет меняться.
-
Создайте сервисный аккаунт
Для управления машиной из командной строки необходима роль editor.
-
Укажите логин для пользователя виртуальной машины.
-
Откройте файл yc_rsa.pub и скопируйте содержимое в поле SSH ключ.
-
-
Доступ к виртуальной машине
-
Для получения доступа к виртуальной машине необходимо ввести команду в терминале компьютера
ssh [-i identity_file] [user@]host[:port]
identity_file - путь до приватной части SSH ключа
user - имя пользователя (логин - указывали в настройках)
host - внешний адрес хоста находится в свойствах вашей виртуальной машины
Для нашего примера команда будет иметь следующий вид:
ssh -i /Users/GreenAPI/ssh/yc_rsa green-api@84.252.137.226
-
После ввода команды может выйти сообщение "Подлинность хоста не может быть установлена, продолжаем" (yes), введите пароль (фраза, которую использовали при создании SSH ключа) командная строка изменится green-api@webhook-server:~$ (вы вошли на виртуальную машину).
-
-
Запуск контейнера
-
При использовании данного метода виртуальная машина не скачает и не установит docker, все необходимо сделать вручную.
Для просмотра уведомлений вам необходимо настроить ваш инстанс в консоли кабинета Green-Api на работу с сервером, указать внешний ip адрес машины и порт.
Адрес отправки уведомлений (URL) | http://158.160.6.161:8080 (пример)
-
Введите следующие команды в терминале виртуальной машины:
sudo apt-get update
sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) 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-compose-plugin
sudo apt install docker-compose
-
Получение docker-compose файла
wget https://raw.githubusercontent.com/green-api/whatsapp-api-webhook-server-python/master/docker-compose.yml
sudo docker-compose build
-
Запуск контейнера в фоне:
sudo docker-compose up -d --force-recreate
-
-
Просмотр полученных сообщений
- Просмотреть запущенные контейнеры
sudo docker ps
-
Посмотреть логи запущенного контейнера
sudo docker logs [OPTIONS] CONTAINER - показать лог контейнера
CONTAINER - id или имя запущенного контейнера
OPTIONS - -f, --follow - опция непрерывного отслеживания вывода лога
(Ctrl + C - выход из режима)
Для нашего примера строка будет выглядеть так:
sudo docker logs --follow 29a6012fb262
- Просмотреть запущенные контейнеры