Κοινές εντολές

Χρησιμοποιήστε αυτές τις εντολές τακτικά για τη διαχείριση των κοντέινερ rtCloud. Εκτελέστε τις από τον κατάλογο που περιέχει το docker-compose.production.yml.

  # Έλεγχος κατάστασης και υγείας όλων των κοντέινερ
docker compose -f docker-compose.production.yml ps

# Προβολή live αρχείων καταγραφής (όλες οι υπηρεσίες)
docker compose -f docker-compose.production.yml logs -f

# Προβολή αρχείων καταγραφής μόνο εφαρμογής
docker compose -f docker-compose.production.yml logs -f rtcloud

# Επανεκκίνηση ενός κοντέινερ
docker compose -f docker-compose.production.yml restart rtcloud

# Διακοπή όλων των υπηρεσιών
docker compose -f docker-compose.production.yml down

# Εκκίνηση όλων των υπηρεσιών
docker compose -f docker-compose.production.yml up -d

# Άνοιγμα κέλυφους εντός κοντέινερ εφαρμογής
docker compose -f docker-compose.production.yml exec rtcloud bash
  

Αναβάθμιση

Οι ενημερώσεις rtCloud διανέμονται ως νέες ετικέτες εικόνας Docker. Η αναβάθμιση ανακτά την τελευταία εικόνα και ανδημιουργεί το κοντέινερ εφαρμογής. Οι μετεγκαταστάσεις βάσης δεδομένων εκτελούνται αυτόματα κατά την εκκίνηση.

1. Ανάκτηση τελευταίας εικόνας:

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

2. Ανδημιουργία κοντέινερ εφαρμογής:

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

Καρφίτσωμα έκδοσης

Για αναβάθμιση σε συγκεκριμένη έκδοση αντί για latest, ενημερώστε το RTCLOUD_IMAGE στο .env:

  RTCLOUD_IMAGE=rtawebteam/rta-smartsurvey:1.2.3
  

Δημιουργία αντιγράφων ασφαλείας και επαναφορά

Δημιουργία αντιγράφου ασφαλείας βάσης δεδομένων

  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
  

Επαναφορά βάσης δεδομένων

  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
  

Δημιουργία αντιγράφου ασφαλείας μεταφορτωμένων αρχείων

  # Δημιουργία αντιγράφου ασφαλείας μεταφορτώσεων
docker run --rm \
  -v rtcloud_uploads:/data \
  -v "$(pwd):/backup" \
  alpine tar czf /backup/uploads-$(date +%Y%m%d).tar.gz -C /data .

# Δημιουργία αντιγράφου ασφαλείας ηχογραφήσεων
docker run --rm \
  -v rtcloud_audios:/data \
  -v "$(pwd):/backup" \
  alpine tar czf /backup/audios-$(date +%Y%m%d).tar.gz -C /data .
  

Επαναφορά μεταφορτωμένων αρχείων

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

Αυτόματα ημερήσια αντίγραφα ασφαλείας

Προσθέστε εργασία cron στον κεντρικό υπολογιστή. Επεξεργαστείτε το root crontab με crontab -e:

  # Ημερήσιο αντίγραφο ασφαλείας βάσης δεδομένων στις 2:00 π.μ., διατήρηση 30 ημερών ιστορικού
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
  

Αντιμετώπιση προβλημάτων

Το κοντέινερ εφαρμογής δεν εκκινεί

Ελέγξτε τα αρχεία καταγραφής κοντέινερ για μηνύματα σφάλματος:

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

Κοινές αιτίες:

  • Ελλείπουσες ή μη έγκυρες μεταβλητές περιβάλλοντος στο .env
  • Η MySQL δεν είναι ακόμα έτοιμη (αναμείνετε 60 δευτερόλεπτα και ελέγξτε ξανά)
  • Σύγκρουση θύρας — άλλη διαδικασία χρησιμοποιεί ήδη το APP_PORT

Η MySQL δεν είναι υγιής

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

Κοινές αιτίες:

  • MYSQL_ROOT_PASSWORD δεν έχει οριστεί στο .env
  • Κατεστραμμένος τόμος δεδομένων (σπάνιο — ελέγξτε χώρο δίσκου με df -h)

Θύρα ήδη σε χρήση

Αλλάξτε APP_PORT ή SHINY_PORT στο .env σε ελεύθερη θύρα, στη συνέχεια ανδημιουργήστε τα κοντέινερ:

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

400 Αδυναμία επαλήθευσης CSRF Token

Απενεργοποιήστε την επαλήθευση CSRF μόνο για τοπική ανάπτυξη:

  CSRF_VALIDATION_ENABLED=false
  

Στη συνέχεια επανεκκινήστε την εφαρμογή:

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

Μην απενεργοποιείτε την επαλήθευση CSRF στην παραγωγή.

Ξεχάσατε τον κωδικό διαχειριστή

Επαναφέρετε τον κωδικό διαχειριστή απευθείας στη βάση δεδομένων. Συνδεθείτε στο κοντέινερ MySQL και ενημερώστε το hash κωδικού.

Το κοντέινερ επανεκκινείται συνεχώς

Ελέγξτε εάν ο έλεγχος υγείας αποτυγχάνει:

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

Ο δίσκος είναι γεμάτος

Εντοπίστε τι καταναλώνει χώρο:

  df -h
docker system df
docker system prune
  

Μην χρησιμοποιείτε docker system prune --volumes καθώς θα διαγράψει δεδομένα εφαρμογής.


Έλεγχοι υγείας

ΚοντέινερΜέθοδος ελέγχουΠερίοδος εκκίνησηςΔιάστημα
rtcloud-appHTTP GET /health90 δευτερόλεπτα30 δευτερόλεπτα
rtcloud-mysqlmysqladmin ping30 δευτερόλεπτα10 δευτερόλεπτα
rtcloud-keycloakHTTP GET :9000/health/live120 δευτερόλεπτα30 δευτερόλεπτα
Ήταν χρήσιμη αυτή η σελίδα;