스프링 네이티브 엣지 RPi
9451 단어 raspberrypi
이 문서에서는 이러한 애플리케이션을 배포하는 데 사용되는 기본 OS 이미지를 생성하는 방법을 설명합니다.
Spring Boot Maven 플러그인을 사용하여 ARM64 네이티브 OCI 이미지를 생성합니다.
여기에 문서화된 프로세스가 끝나면 해당 OCI 이미지를 실행할 수 있는 장치가 있습니다.
그런 다음 이러한 장치를 실내 및 실외에 그리고 구성된 WIFI 범위 내에서 배포합니다.
라즈베리 파이 제로 2W
SD card(rpi-imager)을 사용하여 Raspberry Pi OS
Bullseye
를 Raspberry 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 카드에 쓰기 전에 고급 옵션을 사용하여 이미지를 구성하십시오.
고급 옵션을 구성한 후:
이미지 쓰기가 완료되면 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+를 공유하겠습니다.
Reference
이 문제에 관하여(스프링 네이티브 엣지 RPi), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dashaun/spring-native-edge-rpi-5c7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)