Általános parancsok

Ezeket a parancsokat rendszeresen használja az rtCloud-konténerek kezeléséhez. Futtassa őket a docker-compose.production.yml fájlt tartalmazó könyvtárból.

  # Az összes konténer állapotának és egészségének ellenőrzése
docker compose -f docker-compose.production.yml ps

# Élő naplók megtekintése (összes szolgáltatás)
docker compose -f docker-compose.production.yml logs -f

# Csak az alkalmazás naplóinak megtekintése
docker compose -f docker-compose.production.yml logs -f rtcloud

# Egyetlen konténer újraindítása
docker compose -f docker-compose.production.yml restart rtcloud

# Az összes szolgáltatás leállítása
docker compose -f docker-compose.production.yml down

# Az összes szolgáltatás elindítása
docker compose -f docker-compose.production.yml up -d

# Shell megnyitása az alkalmazáskonténeren belül
docker compose -f docker-compose.production.yml exec rtcloud bash
  

Frissítés

Az rtCloud frissítéseit új Docker-képfájl-címkékként terjesztik. A frissítés lekéri a legújabb képfájlt, és újra létrehozza az alkalmazáskonténert. Az adatbázis-migrációk automatikusan futnak az indításkor.

1. A legújabb képfájl lekérése:

  docker compose -f docker-compose.production.yml pull
  

2. Az alkalmazáskonténer újra létrehozása:

  docker compose -f docker-compose.production.yml up -d
  

A Docker csak azokat a konténereket cseréli le, amelyek képfájlja megváltozott. A MySQL-konténer és az összes elnevezett kötet nem érintett.

Verzió rögzítése

Egy adott verzióra való frissítéshez a latest helyett frissítse az RTCLOUD_IMAGE értékét a .env fájlban:

  RTCLOUD_IMAGE=rtawebteam/rta-smartsurvey:1.2.3
  

Majd futtassa a docker compose pull és up -d parancsokat a fentiek szerint.

Visszaminősítés

A visszaminősítés általában nem ajánlott, mivel az adatbázis-migrációk nem vonhatók vissza. Ha visszaminősítésre van szükség, állítsa vissza a frissítés előtt készített adatbázis-biztonsági mentésből.


Biztonsági mentés és visszaállítás

Az adatbázis biztonsági mentése

Futtassa ezt a parancsot az alkalmazás adatbázisának SQL-fájlba való exportálásához:

  docker compose -f docker-compose.production.yml exec mysql \
  mysqldump -u root -p"$(grep MYSQL_ROOT_PASSWORD .env | cut -d= -f2)" smartsurvey \
  > backup-$(date +%Y%m%d-%H%M%S).sql
  

A biztonsági mentési fájl a gazdagép aktuális könyvtárába kerül.

Az adatbázis visszaállítása

  docker compose -f docker-compose.production.yml exec -T mysql \
  mysql -u root -p"$(grep MYSQL_ROOT_PASSWORD .env | cut -d= -f2)" smartsurvey \
  < backup-20240101-120000.sql
  

A feltöltött fájlok biztonsági mentése

A felmérési beküldések gyakran tartalmaznak feltöltött fájlokat (fényképek, hangfájlok, dokumentumok), amelyek elnevezett Docker-kötetekben tárolódnak. Ezeket külön kell biztonsági másolatot készíteni az adatbázistól:

  # Feltöltések biztonsági mentése
docker run --rm \
  -v rtcloud_uploads:/data \
  -v "$(pwd):/backup" \
  alpine tar czf /backup/uploads-$(date +%Y%m%d).tar.gz -C /data .

# Hangfelvételek biztonsági mentése
docker run --rm \
  -v rtcloud_audios:/data \
  -v "$(pwd):/backup" \
  alpine tar czf /backup/audios-$(date +%Y%m%d).tar.gz -C /data .
  

Cserélje az rtcloud_uploads és rtcloud_audios értékeket a tényleges kötetnevekre (a COMPOSE_PROJECT_NAME értékével előtagolva), ha megváltoztatta az alapértelmezett értékeket.

A feltöltött fájlok visszaállítása

  docker run --rm \
  -v rtcloud_uploads:/data \
  -v "$(pwd):/backup" \
  alpine tar xzf /backup/uploads-20240101.tar.gz -C /data
  

Automatizált napi biztonsági mentések

Adjon hozzá egy cron-feladatot a gazdagépen az automatikus biztonsági mentések futtatásához. Szerkessze a root crontab-ot a crontab -e paranccsal:

  # Napi adatbázis-biztonsági mentés reggel 2-kor, 30 napos előzmények megőrzésével
0 2 * * * cd /opt/rtcloud && docker compose -f docker-compose.production.yml exec -T mysql \
  mysqldump -u root -p"$(grep MYSQL_ROOT_PASSWORD .env | cut -d= -f2)" smartsurvey \
  > /backups/db-$(date +\%Y\%m\%d).sql && \
  find /backups -name "db-*.sql" -mtime +30 -delete
  

Hibaelhárítás

Az alkalmazáskonténer nem indul el

Ellenőrizze a konténer naplóit a hibaüzenetekért:

  docker compose -f docker-compose.production.yml logs rtcloud
  

Általános okok:

  • Hiányzó vagy érvénytelen környezeti változók a .env fájlban
  • A MySQL még nem áll készen (várjon 60 másodpercet, majd ellenőrizze újra)
  • Port-ütközés — egy másik folyamat már használja az APP_PORT-ot

A MySQL nem egészséges

  docker compose -f docker-compose.production.yml logs mysql
  

Általános okok:

  • A MYSQL_ROOT_PASSWORD nincs beállítva a .env fájlban
  • Sérült adatkötet (ritka — ellenőrizze a lemezterületet a df -h paranccsal)

A MySQL akár 30–60 másodpercig is eltarthat az első indításkor való inicializálásig. Várjon, és ellenőrizze újra a hiba feltételezése előtt.

A port már használatban van

Változtassa meg az APP_PORT-ot vagy a SHINY_PORT-ot a .env fájlban egy szabad portra, majd hozza létre újra a konténereket:

  docker compose -f docker-compose.production.yml up -d --force-recreate
  

A gazdagépen egy portot használó folyamat megkeresése:

  lsof -i :8080
  

400 CSRF Token Could Not Be Verified

Ez a hiba helyi vagy fordított proxy környezetekben jelenik meg, ahol a kérés eredete nem egyezik a várt gazdagéppel. Tiltsa le a CSRF-ellenőrzést csak helyi fejlesztéshez:

  CSRF_VALIDATION_ENABLED=false
  

Majd indítsa újra az alkalmazást:

  docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
  

Ne tiltsa le a CSRF-ellenőrzést éles környezetben. Ha ez a hiba éles környezetben fordul elő, győződjön meg arról, hogy a fordított proxy a helyes Host és X-Forwarded-For fejléceket továbbítja.

Elfelejtette a rendszergazdai jelszót

Állítsa vissza a rendszergazdai jelszót közvetlenül az adatbázisban. Csatlakozzon a MySQL-konténerhez, és frissítse a jelszó-hash-t:

1. lépés — Generálja az új jelszó hash-ét. Cserélje a newpassword értéket a kívánt jelszóra:

  docker compose -f docker-compose.production.yml exec rtcloud php -r "
  \$salt = trim(shell_exec(\"mysql -h mysql -u root -p\\\"\${MYSQL_ROOT_PASSWORD}\\\" \${MYSQL_DATABASE} -se \\\"SELECT salt FROM ss_user WHERE username='admin';\\\"\"));
  echo md5(\$salt . 'newpassword') . PHP_EOL;
"
  

2. lépés — Frissítse a hash-t az adatbázisban:

  docker compose -f docker-compose.production.yml exec mysql \
  mysql -u root -p"${MYSQL_ROOT_PASSWORD}" smartsurvey \
  -e "UPDATE ss_user SET password='<hash_az_1_lepesbol>' WHERE username='admin';"
  

A konténer folyamatosan újraindul

Ellenőrizze, hogy az állapotellenőrzés nem sikertelen-e:

  docker compose -f docker-compose.production.yml ps
docker inspect rtcloud-app --format '{{json .State.Health}}'
  

Az alkalmazás állapotellenőrzése a /health végpontot hívja meg. Ha ez ismételten sikertelen, ellenőrizze az alkalmazás naplóit az indítási hibákért.

A lemezterület megtelt

Azonosítsa, mi foglalja el a területet:

  # Gazdagép lemezhasználatának ellenőrzése
df -h

# Docker lemezhasználatának ellenőrzése (képfájlok, konténerek, kötetek)
docker system df

# Nem használt képfájlok és leállított konténerek eltávolítása (biztonságos futtatni)
docker system prune
  

Ne használja a docker system prune --volumes parancsot, mert az törli az alkalmazásadatokat.


Állapotellenőrzések

Minden szolgáltatásnak automatikus állapotellenőrzése van. A konténer állapota tükrözi az eredményt:

KonténerEllenőrzési módszerIndítási időszakIntervallum
rtcloud-appHTTP GET /health90 másodperc30 másodperc
rtcloud-mysqlmysqladmin ping30 másodperc10 másodperc
rtcloud-keycloakHTTP GET :9000/health/live120 másodperc30 másodperc

A sikertelen állapotellenőrzéssel rendelkező konténerek automatikusan újraindulnak a RESTART_POLICY beállítás szerint (alapértelmezett: unless-stopped).

Hasznos volt ez az oldal?