На прошлой неделе на прошлой неделе я работал над ботом Telegram для базовой обработки изображений, и, поскольку она становится все ближе и ближе к функциональности, которую я ищу, я начал думать о том, как я хочу ее развернуть. Это не мой первый родео, разум. Около года назад в университетском хакатоне, который я построил Очень основной телеграмма бот Для запроса занятости основной библиотеки, которую я в итоге развернул на моем Raspberry Pi (модель 3B) с git клон
, NPM Установка
и NPM запускается
. На этот раз, однако, у меня большие амбиции. Я решил, что собираюсь контейнер бы с Docker и развернут таким образом. Моя миссия — минимизировать время, проведенное в ssh
Анкет Как своего рода сухой пробег (и сладкое оправдание, чтобы откладывать), я провел большую часть вчерашнего вчерашнего дня, переполняя свой библиотечный бот с Docker. Были некоторые взлеты и падения, но в конце концов все получилось — идеальный рецепт для сообщения в блоге, если вы спросите меня.
Перед контейнерированием библиотечного бота я провел небольшое исследование о Docker на Raspberry Pi. Я узнал, что Docker официально поддерживает Raspbian (Официальная ОС для Raspberry Pis), которая была отличной новостью, поэтому я перешел к вопросу о самом простом способе получить Raspberry Pi с докером и запущенным. Я подумал, что, вероятно, будет изображение или сценарий для начальной загрузки в чистую ОС с Docker на PI, и я был прав. Hypriotos продает себя Как «минимальные операционные системы на основе Debian, оптимизированные для запуска Docker», и делает впечатляющее утверждение, что «от начала до конца требуется пользователю менее 5 минут, чтобы начать работу с Docker на Raspberry Pi». Это звучало прекрасно, поэтому я попробовал. Я использовал их Flash Скрипт, чтобы вспыхивать изображение Hypriotos на мою карту MicroSD, и он, казалось, работал, как рекламируется.
Было бы небрежно оставить систему, работающую с именем пользователя по умолчанию и паролем, поэтому я изучил защиту системы. Больше хороших новостей! Я нашел гостевой пост в их блоге под названием «Начало в облаке с облачным инициалом и Hypriotos» Анкет Он описывает процесс мигания изображения Hypriotos вместе с Cloud-init файл конфигурации. Это казалось идеальным решением моей проблемы: я мог бы изменить имя пользователя и имя хоста в файле конфигурации и даже добавить свой общедоступный ключ SSH! К сожалению, я не смог заставить конфигурацию Cloud-INIT работать. После хорошего часа проб, ошибки и терпение Я решил сделать что-то старомодное. В конце концов, я не ожидаю, что буду чистить свой PI и переустановить свежую ОС.
- Скачать изображение Raspbian Buster Lite из Сайт Raspberry Pi
- Разанизируйте его, дважды щелкните, чтобы установить его (так что он выглядит как USB -диск) и вставьте пустой файл с названием
SSH
без расширения файлов в корень изображения (это позволяет вам подключиться к нему на шаге 6) - Проверкайте изображение на карте MicroSD, которую хотите использовать для своего PI (Я рекомендую flash для этого)
- Вставьте прошитый MicroSD в свой PI, подключите его к маршрутизатору через Ethernet и включите его
- Найдите IP -адрес вашего PI (я использую Эта команда терминала )
- SSH в ваш pi (
ssh pi@ip_address
с паролемraspberry
при запросе) - Следуйте всем шагам от «Закрепление вашей малины пи» Раздел документации Raspberry Pi (включая удаление пользователя
pi
- Как новый пользователь, которого вы только что создали на своем PI, установите Docker с
curl -ssl https://get.docker.com | sh
и установить Docker-Compose сSudo Apt-Get Install докер-состав
Развертывание контейнеров
Чтобы сохранить красивый чистый сланец моей свежей мариф -установки, я хотел действительно гладкий процесс развертывания для моих контейнеров Docker. Мое решение было Docker-compose.yml
Глядя немного как это:
version: "3" services: busybot: image: "idmyn/busy-bot:arm" restart: always environment: - TOKEN=********************************* watchtower: image: containrrr/watchtower:latest restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - WATCHTOWER_CLEANUP=true
Это замечательно. Мне просто нужно было отправить этот единственный файл в свой PI с scp docker-compose.yml user@ip_address: ~/docker-compose.yml
В ssh
в пи, и беги Docker -Compose -u -d
раскрутить контейнеры. Сторожевая башня Контейнерные часы для обновлений изображений на Docker Hub , и вы можете автоматизировать изображение Docker на толкании на Мастер
с Действия GitHub Для совершенно ручного трубопровода CI. Вот мой рабочий процесс для этого:
name: buildx on: pull_request: branches: master push: branches: master jobs: buildx: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v1 - name: Set up Docker Buildx id: buildx uses: crazy-max/ghaction-docker-buildx@v1 with: version: latest - name: Docker Login env: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} run: | echo "${DOCKER_PASSWORD}" | docker login —username idmyn —password-stdin - name: Run Buildx run: | docker buildx build \ -t idmyn/transparency-bot:arm \ —platform linux/arm/v7 \ —push .
ПРИМЕЧАНИЕ. Чтобы контейнеры работали на Raspberry Pi, они должны быть построены для архитектуры ARM. Есть информативный пост об этом на Блог Docker Но для того, что это стоит, моя команда сборки выглядит так: Docker Buildx Build -T Idmyn/Busy -Bot: ARM -PLATFORM Linux/ARM/V7 -PUSH.
Оригинал: «https://dev.to/idmyn/slick-docker-deploys-on-raspberry-pi-2f0j»