Spinta diegimas naudojant konteinerius (Docker)

Norint naudoti Spintos Agentą kaip konteinerį galima konteinerį kurti patiems arba naudoti oficialų VSSA palaikomą docker image. Tačiau verta atkreipti dėmesį, kad naudojant VSSA docker image apima tik Spinta dalį, tačiau Redis ir Reverse proxy (SSL užtikrinimui) diegimas ir konfigūravimas lieka institucijos atsakomybėje.

Docker pavyzdys
Docker pavyzdys

VSSA palaikomą oficialų Docker image galima parsisiųsti iš Docker hub: Spinta Docker image

Spinta Agento konfigūracijos failų paruošimas

Visų pirma pasikeiskite aktyvų naudotoją ir katalogą:

sudo -Hsu spinta
cd

Spinta yra konfigūruojama konfigūracijos failo pagalba, kurio, pagal nutylėjimą ieškoma aktyviame kataloge. Kur Spinta ieško konfigūracijos failo, galima patikrinti taip:

Pastaba

PASTABA: Ši komanda neveiks, kol nebus paleistas Spinta konteineris

docker exec spinta spinta config config

Kadangi Spintos konfigūracijos failas neegzistuoja, reikia jį sukurti:

cat > config.yml << 'EOF'
config_path: /app/spinta_config/config
env: production
access: protected

keymaps:
  default:
    type: redis
    dsn: redis://redis-keymap:6379/1

accesslog:
  type: file
  file: /app/spinta_config/logs/access.log
EOF

Failo aprašas

Kintamasis

Privalomas ar neprivalomas

Aprašas

config_path

Privalomas

Nurodo kelią į direktoriją, kurioje yra įvairūs konfigūracijos duomenys

env

Nurodo, ar aplinka testinė, ar vystymo, ar produkcinė. Rekomenduojama diegti su production, nes dev arba test įrašo papildomų konfigūracijų.

access

Privalomas nuo 0.2dev22

Nurodo numatytąjį prieigos lygį. Rekomenduojama nurodyti protected. Nuo versijos 0.2dev22 numatytoji reikšmė pasikeitė iš protected į open — neaprašius šio lauko, modeliai su access=protected grąžins ModelNotFound klaidą.

keymaps

Privalomas

Aprašyta žemiau

.default

Nurodo numatytąjį

..type

Tipas - redis

..dsn

Nurodo, kaip pasiekti servisą

accesslog

Nurodo, kur bus saugomi prieigos žurnalai

.type

Tipas - ar saugoma faile, ar kitaip

.file

Jei saugoma faile, nurodo, kuriame faile

Prieš testuojant ar konfigūracija veikia, sukuriame reikalingus katalogus:

mkdir /opt/spinta/logs
mkdir /opt/spinta/config
mkdir /opt/spinta/.spinta_logs

Keymap DB

KeymapDB
Keymap DB

Įspėjimas

Pagal numatytuosius nustatymus naudojama SQLite, tačiau būtina pakeisti į Redis persistent.

Keymap naudojamas susieti išorinius identifikatorius su vidiniais identifikatoriais. Gali būti konfigūruojama.

Spintos Agentui nurodome kokį keymap komponentą naudoti ir kaip jį pasiektį per config.yml failą. Pateikiame config.yml failo fragmentą:

keymaps:
  default:
    type: redis
    dsn: redis://redis-address:6379/1

Patarimas

Jei neturite Redis serviso, rekomenduojame diegti Docker konteineryje.

Docker konteinerio paleidimas

Sukurkite docker-compose.yml konfigūraciją:

Pastaba

Aplinkos parametrus patartina apsirašyti atskirame aplinkai skirtame faile.

cat > docker-compose.yml << 'EOF'
services:
  redis-keymap:  # sqlite faster alternative
    image: valkey/valkey:9
    restart: always
    command: ["redis-server", "--appendonly", "yes", "--appendfsync", "everysec"] # šie nustatymai užtikrina pilną apsaugojimą nuo duomenų praradimo
    ports:
      - "6379:6379"
    volumes:
      - redis_keymap_data:/data
  spinta:
    image: vssadevops/spinta:latest
    container_name: spinta
    restart: always
    ports:
      - "8000:8000"
    environment:
      HOME: /app/spinta_config
      SPINTA_CONFIG: /app/spinta_config/config.yml
    volumes:
      - /opt/spinta:/app/spinta_config
    depends_on:
      - redis-keymap
    command: bash /app/spinta_config/startup.sh
volumes:
  redis_keymap_data:
EOF

Atsargiai

SVARBU! Redis būtinai turi būti leidžiamas persistent režimu (appendonly:yes ir appendfsync:always parametrai)

Yra keli persistent režimai (žr. Redis/Valkey dokumentaciją). Numatytasis režimas (appendonly:yes ir appendfsync:always) užtikrina didžiausią duomenų nepraradimo patikimumą, tačiau turi mažiausią greitį naujo rakto kūrimo metu, lyginant su kitais režimais.

Paleiskite Docker konteinerius:

docker compose up -d

Patikrinkite Docker būseną:

docker ps -a

Patikrinkite Docker žurnalą:

docker logs spinta

Konfigūracijos tikrinimas

docker exec spinta spinta config config backends manifests accesslog

Pastaba

Jei jūsų duomenų šaltinis - reliacinė duomenų bazė, patikriname ar Spinta gali prisijungti prie duomenų bazės.

docker exec spinta spinta wait 1