스프링 네이티브 엣지 RPi

9451 단어 raspberrypi
Spring Native를 사용하면 15달러짜리 Raspberry Pi Zero 2W 장치에 Spring Boot 애플리케이션을 배포할 수 있습니다.
이 문서에서는 이러한 애플리케이션을 배포하는 데 사용되는 기본 OS 이미지를 생성하는 방법을 설명합니다.
Spring Boot Maven 플러그인을 사용하여 ARM64 네이티브 OCI 이미지를 생성합니다.
여기에 문서화된 프로세스가 끝나면 해당 OCI 이미지를 실행할 수 있는 장치가 있습니다.
그런 다음 이러한 장치를 실내 및 실외에 그리고 구성된 WIFI 범위 내에서 배포합니다.

라즈베리 파이 제로 2W



SD card(rpi-imager)을 사용하여 Raspberry Pi OSBullseyeRaspberry Pi Imager에 설치합니다.
Ubuntu 데스크탑, Mac 랩탑 및 Raspberry Pi 4 데스크탑에서 rpi-imager 도구를 사용했습니다.
이 문서에서는 SD 드라이브가 연결된 Mac에 설치된 rpi-imager를 사용하고 있습니다.

이 예에서는 버전 v1.7.2를 사용하고 있습니다.

"운영 체제"에서 "OS 선택"버튼을 클릭합니다.



목록에서 "Raspberry Pi OS(기타)"를 클릭합니다.



목록에서 "Raspberry Pi OS Lite(64비트)"를 선택합니다.



고급 옵션 설정을 위한 새로운 '톱니바퀴' 버튼이 나타납니다.



SD 카드에 쓰기 전에 고급 옵션을 사용하여 이미지를 구성하십시오.
  • 호스트 이름 설정(hostname.local)
  • WIFI 구성
  • 네트워크
  • 암호
  • 지역

  • 사용자 이름과 암호(사용자 이름)를 설정합니다
  • SSH 활성화
  • 시간대 구성



  • 고급 옵션을 구성한 후:
  • "스토리지"에서 "스토리지 선택"을 클릭합니다
  • "스토리지"목록에서 쓸 SD 카드를 선택합니다.
  • "쓰기"버튼을 클릭하여 이미지와 고급 구성을 SSD 카드에 굽습니다.



  • 이미지 쓰기가 완료되면 SD 카드를 꺼냅니다.
    SD 카드를 Raspberry Pi Zero 2 W에 넣습니다.
    장치의 전원을 켭니다.
    장치가 구성된 WIFI 네트워크에 연결됩니다.

    이 이미저 도구와 이러한 고급 설정 덕분에 이러한 유형의 배포에서 많은 시간을 절약할 수 있었습니다.

    첫 부팅



    SSH를 통해 장치에 연결:

    ssh [email protected]
    
    username@hostname:~ $
    


    사용 가능한 최신 버전 정보로 리포지토리를 업데이트합니다.

     sudo apt update
    


    사용 가능한 최신 버전으로 업그레이드:

    sudo apt full-upgrade -y
    


    독립 실행형 배포에는 펌웨어 업데이트가 필요하지 않습니다.
    다른 배포 유형과의 일관성을 위해 이 작업을 수행합니다.

    펌웨어 업그레이드:

    sudo rpi-update
    


    Following a warning you will be prompted to proceed (y/N).

    This process takes minutes, not seconds, on my Raspberry Pi Zero 2 W devices



    컨테이너 런타임 추가



    컬 파이프에서 껍질까지 볼 때마다 움찔합니다.
    여러분도 그렇게 하시길 바랍니다.
    쉘에 파이핑하기 전에 스크립트를 검토하십시오!

    도커 설치:

    curl -sSL https://get.docker.com | sh
    


    루트 없는 모드에서 Docker 데몬을 사용하여 권한이 없는 사용자로 Docker를 실행합니다.

    username@hostname:~ $ dockerd-rootless-setuptool.sh install
    [ERROR] Missing system requirements. Run the following commands to
    [ERROR] install the requirements and run this tool again.
    
    ########## BEGIN ##########
    sudo sh -eux <<EOF
    # Install newuidmap & newgidmap binaries
    apt-get install -y uidmap
    EOF
    ########## END ##########
    


    누락된 요구 사항을 설치하고 다시 시도하십시오.

    sudo sh -eux <<EOF
    # Install newuidmap & newgidmap binaries
    apt-get install -y uidmap
    EOF
    dockerd-rootless-setuptool.sh install
    


    'dockerd-rootless-setuptool.sh'의 출력은 구성 정보를 제공합니다.

    [INFO] Installed docker.service successfully.
    [INFO] To control docker.service, run: `systemctl --user (start|stop|restart) docker.service`
    [INFO] To run docker.service on system startup, run: `sudo loginctl enable-linger username`
    
    [INFO] Creating CLI context "rootless"
    Successfully created context "rootless"
    
    [INFO] Make sure the following environment variables are set (or add them to ~/.bashrc):
    
    export PATH=/usr/bin:$PATH
    export DOCKER_HOST=unix:///run/user/1000/docker.sock
    


    구성을 위한 Direnv



    위의 단계를 따르는 경우 이 섹션은 필요하지 않습니다.
    환경 구성을 위해 'direnv'를 채택했습니다.

    # Install 'direnv'
    sudo apt install direnv -y
    # Setup the shell hook
    cat <<'EOT' >> ~/.bashrc
    eval "$(direnv hook bash)"
    EOT
    # Enable the shell hook
    source ~/.bashrc
    


    .envrc 파일에 환경 변수를 추가합니다.

    cat <<'EOT' >> ~/.envrc
    export PATH=/usr/bin:$PATH
    export DOCKER_HOST=unix:///run/user/1000/docker.sock
    EOT
    # Enable the new environment
    direnv allow
    


    구성 확인



    시스템 시작 및 재부팅 시 실행되도록 Docker를 구성합니다.

    sudo loginctl enable-linger username
    sudo shutdown -r now
    


    이제 'username'은 권한이 없는 사용자로 Docker 명령을 실행할 수 있습니다.

    확인하다:

    docker info
    


    ARM64용 Spring Boot Native 이미지 배포



    ARM64 기본 OCI 이미지로 제공되는 Spring Bootapplication를 실행합니다.

    docker run --name spring-native-pi --rm -d -p 8080:8080 dashaun/spring-pi-native:focal-arm64
    


    다른 컴퓨터에서 배포를 확인합니다.

    curl -fsSL hostname.local:8080/actuator | jq .
    {
      "_links": {
        "self": {
          "href": "http://hostname.local:8080/actuator",
          "templated": false
        },
        "health-path": {
          "href": "http://hostname.local:8080/actuator/health/{*path}",
          "templated": true
        },
        "health": {
          "href": "http://hostname.local:8080/actuator/health",
          "templated": false
        }
      }
    }
    


    요약



    독립형 WIFI 연결 장치를 배포하는 방법입니다.
    이 프로세스는 단순화될 수 있습니다.
    각 단계를 이해하는 데 도움이 되도록 문서화된 대로 이 프로세스를 사용합니다.
    이 프로세스를 통해 배포 및 유지 관리를 위한 일관된 방법을 가질 수 있습니다.
    이를 통해 Edge에 Spring Boot 애플리케이션을 배포할 수 있습니다.
    Spring Native를 사용하면 Raspberry Pi에서 Spring을 쉽고 재미있게 즐길 수 있습니다.

    곧 Spring Boot와 Spring Native를 사용하는 프로젝트Pimoroni Enviro+를 공유하겠습니다.

    좋은 웹페이지 즐겨찾기