Рубрики
Uncategorized

FusionAuth на ARM64

С момента выпуска Fusionauth — я был большим поклонником! Его легкий, стабильный и придерживается Standa … помечен DevOps, ARM64, Identity, разрешение.

С момента выпуска Fusionauth — я был большим поклонником! Его легкий, стабильный и придерживается стандартов. FusionAuth-это лучшая и наиболее полная система авторизации аутентификации и управления пользователем, которая приносит вам реальную ценность для вашего доллара.

«Build For Devs» — один из уникальных точек продаж решения FusionAuth Identity Solution. Но как насчет хобби-разработчика? Или-что, если вы хотите разработать свое заявление дома, во время этих корон-времени? Это возможно?

Ответ — да, если у вас есть сервер дома, который запускает Linux — вы можете! Но не у каждого разработчика есть место для сервера или компьютера, который запустит экземпляр FusionAuth дома.

Это были Raspberry Pi, Nanopi Neo или любое другое устройство ARM64, могут быть очень удобны. С ценой, варьирующейся от 20 до 90 долларов, вы можете владеть таким устройством — и иметь свой собственный сервер разработки дома. Это уже было сделано раньше, и теперь мы собираемся использовать нашего бортового компьютера в качестве полномасштабного решения для идентификации.

Поскольку FusionAuth версия 1.15 экземпляр Elastic-Search больше не требуется (но является необязательным для экземпляров с тяжелыми нагрузками), что оптимально для крошечного развертывания FusionAuth в домашних условиях.

Для достижения абсолютной переносимости мы будем использовать Docker, который позволяет нам запускать приложения внутри контейнера, и, таким образом, сдерживать установку/конфигурацию к минимуму. Fusionauth уже доступен на Dockerhub, поэтому запуск его должен быть легким. Пойдем!

Войдите в свое устройство и запустите экземпляр FusionAuth.

root@arm64docker:~# docker run -p 9011:9011 \
--name fusionauth-app \
fusionauth/fusionauth-app:latest

Unable to find image 'fusionauth/fusionauth-app:latest' locally
latest: Pulling from fusionauth/fusionauth-app
aad63a933944: Pull complete
38dcc57173c1: Pull complete
3c3aac2babe6: Pull complete
1eef9e911159: Pull complete
Digest: sha256:931ec2f08adf562a7f94c62dcf62ba562b41a571318588de231c5c21126b7b2c
Status: Downloaded newer image for fusionauth/fusionauth-app:latest
standard_init_linux.go:211: exec user process caused "exec format error"

Как вы можете видеть, процесс выходит со следующим сообщением об ошибке: standard_init_linux.go: 211: пользовательский процесс EXEC вызвал «ошибка формата EXEC».

Так что же происходит? Эта ошибка говорит нам, что приложение, которое вы хотели начать, было создано для другой архитектуры. Если мы проверим Dockerhub и посмотрим теги FusionAuth, вы заметите, что контейнеры Docker создаются для Linux/AMD64. Когда мы проверяем нашу платформу SBC, набрав команду Uname -A Результатом будет другая платформа, тогда AMD64

root@arm64docker:~# uname -a
Linux arm64docker 5.4.43-sunxi64 #20.05.2 SMP Tue Jun 2 17:20:17 CEST 2020 aarch64 GNU/Linux 

Мы можем сделать вывод, что Fusionauth не совместим с ARM64. Но это действительно правда? Fusionauth — это приложение Java, а Java может работать на устройствах ARM64 — так что теоретически оно может сработать!

Если мы посмотрим на Dockerfile Fusionauth, мы увидим, как строит контейнер. https://hub.docker.com/r/fusionauth/fusionauth-app

FROM alpine:latest as build

###### Install stuff we need and then cleanup cache #################
RUN apk add --no-cache \
  unzip \
  curl

###### Get and install FusionAuth App Bundle ########################
ENV FUSIONAUTH_VERSION=1.17.1
RUN curl -Sk --progress-bar https://storage.googleapis.com/inversoft_products_j098230498/products/fusionauth/${FUSIONAUTH_VERSION}/fusionauth-app-${FUSIONAUTH_VERSION}.zip -o fusionauth-app.zip \
  && mkdir -p /usr/local/fusionauth/fusionauth-app \
  && unzip -nq fusionauth-app.zip -d /usr/local/fusionauth

FROM fusionauth/fusionauth-java:14-jdk-alpine3.11.5

RUN addgroup fusionauth \
  && adduser -G fusionauth -D -H fusionauth

COPY --chown=fusionauth:fusionauth --from=build /usr/local/fusionauth /usr/local/fusionauth

###### Start FusionAuth App #########################################
LABEL description="Create an image running FusionAuth App. Installs FusionAuth App"
LABEL maintainer="FusionAuth "
EXPOSE 9011
USER fusionauth
ENV FUSIONAUTH_USE_GLOBAL_JAVA=1
CMD ["/usr/local/fusionauth/fusionauth-app/apache-tomcat/bin/catalina.sh", "run"]

Если мы разбиваем то, что здесь произойдет, это: — Загрузите и расслабляет приложение FusionAuth, — Импорт Java, — добавьте обращение FusionAuth, что изображения FusionAuth Docker основаны на альпийском языке и используют Java версию 14

Прежде чем мы начнем, приятно знать, что Alpine не использует Glibc — но мусульманин. Поскольку нет, совместимого с мусульманами JDKV14, а установка GLIBC на альпийский не является частью этого урока, мы будем использовать (гораздо больше) изображение Ubuntu Java.

Мы создаем Dockerfile, где мы указываем контейнер jdk jdk v14 Мы притягиваем Zip Fusionauth — как в официальном Dockerfile. Мы добавляем пользователя, и это все. Смотрите приведенный ниже Dockerfile для деталей.

FROM adoptopenjdk:14-jdk-hotspot-bionic as build

###### Install stuff we need and then cleanup cache #################
RUN apt update && apt install unzip

###### Get and install FusionAuth App Bundle ########################
ENV FUSIONAUTH_VERSION=1.17.0
RUN curl -Sk --progress-bar https://storage.googleapis.com/inversoft_products_j098230498/products/fusionauth/${FUSIONAUTH_VERSION}/fusionauth-app-${FUSIONAUTH_VERSION}.zip -o fusionauth-app.zip \
  && mkdir -p /usr/local/fusionauth/fusionauth-app \
  && unzip -nq fusionauth-app.zip -d /usr/local/fusionauth


FROM adoptopenjdk:14-jdk-hotspot-bionic


#RUN addgroup fusionauth && adduser -G fusionauth -D -H fusionauth
RUN groupadd fusionauth
RUN useradd -r -s /bin/sh -g fusionauth -u 1001 fusionauth


# copy FusionAuth from other image.
COPY --chown=fusionauth:fusionauth --from=build /usr/local/fusionauth /usr/local/fusionauth

###### Start FusionAuth App #########################################
LABEL description="Create an image running FusionAuth App. Installs FusionAuth App"
LABEL maintainer="FusionAuth-community "
EXPOSE 9011
USER fusionauth
ENV FUSIONAUTH_USE_GLOBAL_JAVA=1
CMD ["/usr/local/fusionauth/fusionauth-app/apache-tomcat/bin/catalina.sh", "run"]

Теперь мы можем построить контейнер Docker и использовать его на устройстве ARM64. Итак, запускаете ли вы это на Raspberry Pi, Nanopi, Jetson или любом другом SBC-Device-ваш личный IDP готов к любой задаче разработки, с которыми вы столкнетесь, например, запуск автоматических тестов против реального сервера OAuth2!

Еще одна возможность-запустить сервер FusionAuth на AWS ARM64 CloudPlatform, если вы предпочитаете серверы с низким энергопотреблением.

Посмотрите на новую крутую функцию Kickstart, чтобы Quikly развернуть свое решение управления идентификацией и начните разрабатывать ваши приложения дома, как босс!

Но, если все это слишком много для вас, вы также можете загрузить мой контейнер ARM64 Prebuild на DockerHub https://hub.docker.com/repository/docker/botnyx/fusionauth-app-aarch64

docker run \
    -p 9011:9011 \
    --name fusionauth-app \
    botnyx/fusionauth-app-aarch64:latest

Пожалуйста, имейте в виду, что это изображение ARM64 не является официальным и не является официально поддерживаемым!

Для получения дополнительной информации о FusionAuth, посетите: http://fusionauth.io

Вот и все, счастлив развиваться!

Эта статья была опубликована в моем блоге: https://blog.jerryhopper.com/2020/06/15/fusionauth-on-arm64/

Оригинал: «https://dev.to/jerry_hopper/fusionauth-on-arm64-3emn»