Рубрики
Uncategorized

Slick Docker развертывается на Raspberry Pi

На прошлой неделе в мои свободные моменты я работал над ботом Telegram для базовой обработки изображений, с меткой DevOps, Docker, Raspberrypi, CI.

На прошлой неделе на прошлой неделе я работал над ботом 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 и переустановить свежую ОС.

  1. Скачать изображение Raspbian Buster Lite из Сайт Raspberry Pi
  2. Разанизируйте его, дважды щелкните, чтобы установить его (так что он выглядит как USB -диск) и вставьте пустой файл с названием SSH без расширения файлов в корень изображения (это позволяет вам подключиться к нему на шаге 6)
  3. Проверкайте изображение на карте MicroSD, которую хотите использовать для своего PI (Я рекомендую flash для этого)
  4. Вставьте прошитый MicroSD в свой PI, подключите его к маршрутизатору через Ethernet и включите его
  5. Найдите IP -адрес вашего PI (я использую Эта команда терминала )
  6. SSH в ваш pi ( ssh pi@ip_address с паролем raspberry при запросе)
  7. Следуйте всем шагам от «Закрепление вашей малины пи» Раздел документации Raspberry Pi (включая удаление пользователя pi
  8. Как новый пользователь, которого вы только что создали на своем 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»