Данный репозиторий - шаблон, его можно использовать для создания бота для Telegram. За счёт github-actions в репозитории автоматизировано:
- тестирование;
- создание Dockerfile;
- сборка docker image;
- пуш docker image в Dockerhub;
- обновление запущенного контейнера на удаленном сервере;
- обновление переменных среды на удаленном сервере (файл .env).
- Арендовать VDS (параметры VDS поддаются обсуждению) на CentOS, главное, чтобы был 1 публичный IP-адрес, по которому можно подключаться к серверу через SSH + у сервера был доступ в интернет.
- Сгенерировать пару SSH ключей себе на рабочей машинке через
ssh-keygen -t ed25519 -C "[email protected]" - Ключ с расширением
.pub- публичный, его надо добавить на сервер. Либо какой-то утилитой "Добавить SSH-ключ", если хостинг продвинутый, либо вручную: Добавить ключ в конец файла~/.ssh/authorized_keys - Ключ без расширения - приватный, его добавить надо в github secrets.
- Если хочется серьезной безопасности, то необходимо отключить подключение по паролю через ssh:
В файле
/etc/ssh/sshd_configизменитьPasswordAuthenticationнаPasswordAuthentication no.
- Если хочется серьезной безопасности, то необходимо отключить подключение по паролю через ssh:
В файле
- Установить docker с docker compose (ref -официальная инструкция :
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start dockerМожно проверить успех мероприятия командой sudo docker run hello-world
- Готово! можно запускать action Build on PROD
Для разработки необходимо использовать ветки, названные в формате dev/add-something.
После пуша такой ветки в Github-репозиторий будет запушен Github-action, запускающий автотесты по доработанному приложению.
Если тесты успешно пройдены, то необходимо создать Pull Request (PR) и дождаться одобрения от другого участника проекта.
После того, как PR dev-ветки был одобрен, её необходимо смержить в ветку test, после чего запуститься Github-action, который прогонит автотесты, создаст docker image с тегом test и запушит его на Dockerhub.
Предполагается, что перед мержем в master- ветку этот image будет тщательным образом протестирован.
После тестирования функционала в ветке test, её необходимо влить в ветку master. Соответствующий github-action прогонит автотесты, создаст docker image с тегом latest, запушит его на Dockerhub, обновит запущенный на сервере контейнер на актуальную версию.
Для корректной работы всех github-actions в репозиторий должны быть добавлены секреты.
| Название | Суть |
|---|---|
| SERVER_HOST | Адрес хоста сервера |
| SERVER_USER | Имя пользователя, от лица которого подключаемся к серверу |
| SERVER_SSH_KEY | SSH-ключ для подключения к серверу |
| SERVER_SSH_PORT | Номер SSH-порта сервера |
| DOCKER_HUB_USERNAME | Логин в Dockerhub |
| DOCKER_HUB_PASSWORD | Пароль в Dockerhub |
| TELEGRAM_BOT_TOKEN_PROD | Токен для Telegram бота |
| TELEGRAM_BOT_NAME_PROD | Имя Telegram бота |
Данные из БД хранятся в каталоге /var/lib/docker/volumes/tg-bot-db-data сервера.
Подключиться-поглядеть на БД можно в контейнере, через команду psql --username=data --dbname=data, запущенную в интерактивном режиме в контейнере.
- Зайти в контейнер повторно можно через
docker exec -it <имя_контейнера> bash- Сразу войти в БД можно через:
docker exec -it <имя_контейнера> psql --username=data --dbname=data