Сборка и развертывание проекта Pocketbase с помощью Docker и Fly.io


PocketBase

Сегодня я расскажу о Pocketbase и о том, как разработать бэкенд с помощью этого инструмента.
Pocketbase — это бэкенд с открытым исходным кодом, который распространяется в виде одного бинарного файла Go. Этот новый инструмент похож на Firebase.

Этот проект создан для использования SQLite в качестве базы данных с REST api. Некоторые из функций, которые интегрирует этот инструмент, следующие:

  • База данных в реальном времени (на основе SQLite)
  • Файловое хранилище: интегрируется с S3, в ближайшее время будет добавлена поддержка объектных хранилищ.
  • Autenticación
  • Полнофункциональный пользовательский интерфейс администратора — для управления пользователями, коллекциями и т.д.
  • Расширяемость с помощью языка программирования Go для расширения функциональности

Этот инструмент идеально подходит для создания простых бэкендов для небольших проектов, хобби, практики и многого другого.

Требования

Вы должны обладать знаниями по следующим темам:

  • Docker
  • Веб-разработка
  • Linux

Шаг 1: Создайте образ с помощью Docker

Если вы хотите сэкономить время, вы можете использовать мой образ Docker, для этого перейдите к шагу 2.

Первым делом необходимо создать образ с помощью Docker, для этого сначала нужно установить его, затем открыть терминал.

Сначала создадим папку, в которой будет храниться наш проект:

~$ mkdir pocketbase-docker 
~$ cd pocketbase-docker
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем мы создадим наш Dockerfile, для этого мы можем открыть наш любимый редактор, в моем случае vscode, и уже в нем мы создадим файл и добавим следующее:

FROM alpine:3 as downloader

ARG TARGETOS
ARG TARGETARCH
ARG VERSION=0.2.8

ENV BUILDX_ARCH="${TARGETOS:-linux}_${TARGETARCH:-amd64}"

# Install the dependencies
RUN apk add --no-cache 
    ca-certificates 
    unzip 
    wget 
    zip 
    zlib-dev

RUN wget https://github.com/pocketbase/pocketbase/releases/download/v${VERSION}/pocketbase_${VERSION}_${BUILDX_ARCH}.zip 
    && unzip pocketbase_${VERSION}_${BUILDX_ARCH}.zip 
    && chmod +x /pocketbase

FROM scratch

EXPOSE 8090

COPY --from=downloader /pocketbase /usr/local/bin/pocketbase
CMD ["/usr/local/bin/pocketbase", "serve", "--http=0.0.0.0:8090"]
Войти в полноэкранный режим Выйти из полноэкранного режима

Хорошо, как только мы это сделали, давайте вернемся к терминалу, чтобы создать наш образ Docker:

# We must be in the terminal positioned in the folder where we have our Dockerfile
~$ docker build -t pocketbase .
Войти в полноэкранный режим Выйти из полноэкранного режима

После этого мы можем протестировать образ, чтобы убедиться, что он работает, для этого выполните следующую команду:

# You need to make sure you have the '-it' flag and expose the port
~$ docker run -it --rm -p 8090:8090 pocketbase
Enter fullscreen mode Выйти из полноэкранного режима

Если все прошло успешно, вы можете открыть браузер на localhost:8090/_/ и увидеть панель администратора pocketbase.

Теперь, когда мы убедились, что все работает, мы собираемся опубликовать наш образ в нашем аккаунте docker, если у вас его нет, я рекомендую вам создать его и войти в него с терминала, выполнив следующую команду:

~$ docker login -u <your-username> -p <your-password>
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь давайте развернем наш образ:

# We must add a tag to our image before deploying, for simplicity I will leave it as 'latest'
~$ docker tag pocketbase:latest <your-docker-user>/pocketbase:latest
# Now let's roll out
~$ docker push <your-docker-user>/pocketbase:latest
Войти в полноэкранный режим Выйти из полноэкранного режима

После этого вы загрузили образ в docker 😎

Шаг 2: Развертывание нашего образа Docker на fly.io

Для этого, прежде всего, необходимо установить fly.io в нашей операционной системе, затем я оставлю вам команды для каждой операционной системы:

# Windows:
~$ iwr https://fly.io/install.ps1 -useb | iex
# Linux
~$ curl -L https://fly.io/install.sh | sh
# Mac
~$ brew install flyctl
# or
~$ curl -L https://fly.io/install.sh | sh
Войти в полноэкранный режим Выйти из полноэкранного режима

Позже вам нужно будет зарегистрироваться, для этого вы можете выполнить следующую команду в терминале:

~$ flyctl auth signup
Enter fullscreen mode Выйти из полноэкранного режима

Эта команда откроет окно в браузере, где вы сможете зарегистрироваться, а затем попросит вас ввести способ оплаты, не волнуйтесь, Fly не возьмет с вас денег, если только ваше приложение не превысит установленный бесплатный лимит, а для целей данного руководства это поможет вам совершенствоваться.

Теперь вам нужно войти в систему:

~$ flyctl auth login
Войти в полноэкранный режим Выйти из полноэкранного режима

После того, как вы вошли в систему, переходим к развертыванию:

Для этого нам понадобится наш образ Docker, который мы развернули.
Сначала мы должны создать необходимый файл для развертывания, но в моем случае я позволю Fly создать его для меня, для этого в терминале мы выполним следующую команду:

~$ flyctl launch --image <your-docker-user>/pocketbase:latest
# if you decided to use my image you can copy the following command:
~$ flyctl launch --image marcoa16b/pocketbase:latest
Войти в полноэкранный режим Выйти из полноэкранного режима

На этом этапе fly задаст нам пару вопросов, мы дадим нашему проекту имя и выберем регион для нашего сервера.

Очень хорошо, с этим у нас будет наш файл fly.toml, мы должны внести некоторые изменения в этот файл, так как нам нужно раскрыть порт контейнера Docker, чтобы мы могли получить доступ к нему из домена, который fly создаст для нас, для этого мы изменим следующее:

...
[experimental]
  allowed_public_ports = [8090]
  ...
...
[[services]]
  ...
  internal_port = 8090
  [[services.ports]]
    handlers = ["http"]
    port = 8090
...
Войти в полноэкранный режим Выйти из полноэкранного режима

Остальное можно оставить как есть.

После того, как вы изменили эти порты, вы можете запустить flyctl deploy и если вы получите следующий результат, то все в порядке:

 1 desired, 1 placed, 1 healthy, 0 unhealthy [health checks: 1 total, 1 passing]
--> v0 deployed successfully
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь вы можете перейти на страницу fly.io и убедиться, что у вас там есть ваш проект, когда вы откроете ее, у вас появится ссылка на ваш проект, и при первом открытии по адресу yourproject.fly.dev/_/ вы сможете создать своего пользователя-администратора и войти в систему, чтобы начать управлять вашим бэкендом.

В той же панели администратора pocketbase вы сможете найти простую, но очень полную документацию, чтобы иметь возможность использовать этот инструмент в своих Javascript проектах.

Если вы видите какие-либо ошибки в коде или у вас есть предложения по улучшению проекта, не стесняйтесь оставить свой комментарий.

Если все прошло хорошо и вам удалось создать свой бэкенд с помощью pocketbase и Docker, я поздравляю вас и благодарю за прочтение этого руководства. 😁🎉

Не забывайте следить за мной в моих социальных сетях, скоро я начну публиковать больше контента в большинстве из них, также так вы сможете узнать о моих новых руководствах и проектах.👍

Github
Twitter

Оцените статью
devanswers.ru
Добавить комментарий