Rm: impossibile rimuovere '/var/run/postgresql': Directory non vuota

Dopo aver avuto un disco pieno e non essere riuscito a spostare le mie immagini, ho deciso di cancellare tutto, avviare un nuovo container discourse e utilizzare il backup.

Ho cancellato /var/discourse e ho eseguito docker system prune -a

Quindi ho seguito la guida ufficiale. Ma… qualcosa non va:

./launcher rebuild app
x86_64 arch rilevato.
Assicurazione che il launcher sia aggiornato
Richiesta da origin
Launcher è aggiornato
2.0.20230222-0048: Estrazione da discourse/base
Digest: sha256:XXXX
Stato: Immagine aggiornata per discourse/base:2.0.20230222-0048
docker.io/discourse/base:2.0.20230222-0048
/usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2023-03-04T12:04:27.482399 #1]  INFO -- : Lettura da stdin
I, [2023-03-04T12:04:27.486188 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2023-03-04T12:04:28.456925 #1]  INFO -- : Generazione delle localizzazioni (potrebbe richiedere del tempo)...
Generazione completata.

I, [2023-03-04T12:04:28.457319 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2023-03-04T12:04:28.581971 #1]  INFO -- :
I, [2023-03-04T12:04:28.583082 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2023-03-04T12:04:28.588444 #1]  INFO -- :
I, [2023-03-04T12:04:28.588792 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2023-03-04T12:04:28.591995 #1]  INFO -- :
I, [2023-03-04T12:04:28.592147 #1]  INFO -- : > rm -fr /var/run/postgresql
rm: impossibile rimuovere '/var/run/postgresql': Directory non vuota
I, [2023-03-04T12:04:28.616079 #1]  INFO -- :


FALLITO
--------------------
Pups::ExecError: rm -fr /var/run/postgresql fallito con ritorno #<Process::Status: pid 16 exit 1>
Posizione del fallimento: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec fallito con i parametri "rm -fr /var/run/postgresql"
bootstrap fallito con codice di uscita 1
** FALLITO IL BOOTSTRAP ** si prega di scorrere verso l'alto e cercare messaggi di errore precedenti, potrebbero essercene più di uno.
./discourse-doctor potrebbe aiutare a diagnosticare il problema.

Qualcuno può aiutarmi qui?

1 Mi Piace

Hai fermato il vecchio container?

docker stop app
docker rm app

2 Mi Piace

Beh, mentre sarebbe assolutamente da me, questa volta non è così semplice:

# sudo -s
# cd /var/discourse/
# docker stop app
Error response from daemon: No such container: app
# docker rm app
Error: No such container: app

Penso che il problema potrebbe essere che ho spostato tutto dalla vecchia posizione predefinita dalle immagini Docker al nuovo posto e ora il Docker di Discourse non è in grado di accedere al filesystem che si aspetta?

1 Mi Piace

/var/run/postgresql non esiste.

Non ho idea del perché non funzioni più. :cry:

1 Mi Piace

Com’è il tuo app.yml?

1 Mi Piace
## questo è il modello di container Docker Discourse tutto in uno e autonomo
##
## Dopo aver apportato modifiche a questo file, DEVI ricostruire
## /var/discourse/launcher rebuild app
##
## FAI *MOLTA* ATTENZIONE QUANDO MODIFICHI!
## I FILE YAML SONO SUPER SUPER SENSIBILI A ERRORI DI SPAZIATURA O ALLINEAMENTO!
## visita http://www.yamllint.com/ per convalidare questo file secondo necessità

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Decommenta queste due righe se desideri aggiungere Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"

## quali porte TCP/IP dovrebbe esporre questo container?
## Se vuoi che Discourse condivida una porta con un altro webserver come Apache o nginx,
## vedi https://meta.discourse.org/t/17247 per i dettagli
expose:
#  - "7890:80"   # http
#  - "7891:443" # https

labels:
  app_name: discourse
  traefik.enable: true
  traefik.http.routers.discourse.entrypoints: http
  traefik.http.routers.discourse.rule: Host(`talk.spielleiten.de`)      ## Inserisci qui il tuo dominio
  traefik.http.middlewares.discourse-https-redirect.redirectscheme.scheme: https
  traefik.http.routers.discourse.middlewares: discourse-https-redirect
  traefik.http.routers.discourse-secure.entrypoints: https
  traefik.http.routers.discourse-secure.rule: Host(`talk.spielleiten.de`)      ## Inserisci qui il tuo dominio
  traefik.http.routers.discourse-secure.tls: true
  traefik.http.routers.discourse-secure.tls.certresolver: http
  traefik.http.routers.discourse-secure.service: discourse
  traefik.http.services.discourse.loadbalancer.server.port: 80
  traefik.docker.network: proxy

docker_args:
  - "--network=proxy"

networks:
  - proxy

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Imposta db_shared_buffers al massimo del 25% della memoria totale.
  ## verrà impostato automaticamente da bootstrap in base alla RAM rilevata, o puoi sovrascriverlo
  #db_shared_buffers: "256MB"

  ## può migliorare le prestazioni di ordinamento, ma aumenta l'utilizzo della memoria per connessione
  #db_work_mem: "40MB"

  ## Quale revisione Git dovrebbe usare questo container? (default: tests-passed)
  #version: tests-passed

env:
  LC_ALL: de_DE.UTF-8
  LANG: de_DE.UTF-8
  LANGUAGE: dn_DE.UTF-8
  EMBER_CLI_PROD_ASSETS: 1
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Quante richieste web concorrenti sono supportate? Dipende da memoria e core CPU.
  ## verrà impostato automaticamente da bootstrap in base alle CPU rilevate, o puoi sovrascriverlo
  #UNICORN_WORKERS: 3

  ## TODO: Il nome del dominio a cui risponderà questa istanza di Discourse
  ## Obbligatorio. Discourse non funzionerà con un semplice numero IP.
  DISCOURSE_HOSTNAME: talk.spielleiten.de

  ## Decommenta se vuoi che il container venga avviato con lo stesso
  ## hostname (-h opzione) specificato sopra (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Elenco di email separate da virgole che diventeranno amministratori e sviluppatori
  ## alla prima registrazione esempio 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'XXX'

  ## TODO: Il server di posta SMTP utilizzato per convalidare nuovi account e inviare notifiche
  # INDIRIZZO SMTP, nome utente e password sono richiesti
  # ATTENZIONE il carattere '#' nella password SMTP può causare problemi!
[eliminato per motivi di privacy]

  ## L'indirizzo CDN http o https per questa istanza di Discourse (configurato per il pull)
  ## vedi https://meta.discourse.org/t/14857 per i dettagli
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## La chiave API di Maxmind per la geolocalizzazione degli indirizzi IP per la ricerca degli indirizzi IP
  ## vedi https://meta.discourse.org/t/-/137387/23 per i dettagli
  DISCOURSE_MAXMIND_LICENSE_KEY: XXX

## Il container Docker è stateless; tutti i dati sono memorizzati in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Qualsiasi comando personalizzato da eseguire dopo la compilazione
run:
  - exec: echo "Inizio comandi personalizzati"
  ## Se vuoi impostare l'indirizzo email 'Da' per la tua prima registrazione, decommenta e modifica:
  ## Dopo aver ricevuto la prima email di registrazione, ri-commenta la riga. Deve essere eseguita solo una volta.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fine comandi personalizzati"

Questo ha funzionato finché non ho cambiato daemon.json:

"data-root": "/srv/new-drive/new-docker-root"
1 Mi Piace

Allora è quello il tuo problema. Questo è un problema di Docker, non di Discourse.

La mia ipotesi è che abbia a che fare con i permessi o con il fatto che l’unità non sia presente in qualche modo.

1 Mi Piace

Lo presumo. Ma tutti gli altri servizi in dockers funzionano come previsto! È solo discourse che non tenterà di accedere al nuovo data-root.
Ecco perché speravo di trovare una soluzione qui.

2 Mi Piace

Potresti provare a cambiare i volumi in una posizione diversa da /var/discourse/shared/standalone

Presumo che tu abbia già eliminato /var/discourse/shared?

1 Mi Piace

Ho eseguito un rm -R /var/discourse e ho seguito la guida ufficiale all’installazione come uno dei primi passaggi.

Ci proverò!

1 Mi Piace

Ho provato sia una directory sullo stesso disco sia una cartella in “data-root”, non è cambiato nulla.

Perché il comando rm fallisce? Presumo che questo sia ancora il file system del sistema operativo (a differenza di quanto accade all’interno del container) e che l’operazione funzioni se ripeto il comando nella shell.

2 Mi Piace

Credo che il comando di eliminazione sia all’interno del container che sta costruendo.

Non credo di avere altre idee.

1 Mi Piace

Grazie mille comunque!

2 Mi Piace

Quella directory viene mappata a /var/discourse/shared/standalone/postgres_run nell’host.

2 Mi Piace
# ls -lsa /var/discourse/shared/standalone
totale 16
4 drwxr-xr-x 4 root            root             4096 Mär  6 08:34 .
4 drwxr-xr-x 3 root            root             4096 Mär  6 08:34 ..
4 drwxr-xr-x 3 root            root             4096 Mär  6 08:34 log
4 drwxrwxr-x 2 systemd-resolve systemd-timesync 4096 Mär  6 08:34 postgres_run
# ls -lsa /var/discourse/shared/standalone/postgres_run/
totale 8
4 drwxrwxr-x 2 systemd-resolve systemd-timesync 4096 Mär  6 08:34 .
4 drwxr-xr-x 4 root            root             4096 Mär  6 08:34 ..

È questo che ti aspettavi? df mostra spazio abbondante, quindi non è un problema di disco pieno.

# ./discourse-doctor
DISCOURSE DOCTOR Lun 6. Mar 18:54:01 CET 2023
OS: Linux dracula 5.4.0-139-generic #156-Ubuntu SMP Fri Jan 20 17:27:18 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Trovato containers/app.yml

==================== IMPOSTAZIONI YML ====================
[eliminato per motivi di privacy]

==================== INFORMAZIONI DOCKER ====================
VERSIONE DOCKER: Docker version 20.10.12, build 20.10.12-0ubuntu2~20.04.1

PROCESSI DOCKER (docker ps -a)

CONTAINER ID   IMMAGINE                                       COMANDO                  CREATO      STATO                  PORTE                                                                      NOMI
f6d3f502384f   cthulhoo/ttrss-fpm-pgsql-static:latest       „/opt/tt-rss/updater…”   4 giorni fa   Up 9 ore               9000/tcp                                                                   ttrss-docker_updater_1
fb0c774b31cb   cthulhoo/ttrss-fpm-pgsql-static:latest       „/docker-entrypoint.…\"   4 giorni fa   Up 9 ore (healthy)     127.0.0.1:8280->80/tcp                                                      ttrss-docker_web-nginx_1
83a32795b305   cthulhoo/ttrss-fpm-pgsql-static:latest       „/opt/tt-rss/dcron.s…”   4 giorni fa   Up 9 ore               9000/tcp                                                                   ttrss-docker_backups_1
c211bc93f368   cthulhoo/ttrss-fpm-pgsql-static:latest       „/bin/sh -c ${SCRIPT…”   4 giorni fa   Up 9 ore               9000/tcp                                                                   ttrss-docker_app_1
4ecb89c6bb9f   postgres:12-alpine                           „docker-entrypoint.s…”   4 giorni fa   Up 9 ore               5432/tcp                                                                   ttrss-docker_db_1
c668703d805d   traefik:latest                               „/entrypoint.sh trae…”   4 giorni fa   Up 9 ore               0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   traefik
f67a63243f13   ghcr.io/paperless-ngx/paperless-ngx:latest   „/sbin/docker-entryp…”   4 giorni fa   Up 9 ore (healthy)     0.0.0.0:8000->8000/tcp, :::8000->8000/tcp                                  paperless-web
d2fbf8682efb   postgres:13                                  „docker-entrypoint.s…”   4 giorni fa   Up 9 ore               5432/tcp                                                                   paperless-db
8284f03fdcd0   redis:6.0                                    „docker-entrypoint.s…”   4 giorni fa   Up 9 ore               6379/tcp                                                                   paperless-redis
ab29487743b0   tootsuite/mastodon                           „/usr/bin/tini -- no…”   4 giorni fa   Up 9 ore (healthy)     3000/tcp, 4000/tcp                                                         mastodon_streaming_1
a117f5e785f8   tootsuite/mastodon                           „/usr/bin/tini -- bu…”   4 giorni fa   Up 9 ore (healthy)     3000/tcp, 4000/tcp                                                         mastodon_sidekiq_1
5a4a7e99230c   tootsuite/mastodon                           „/usr/bin/tini -- ba…”   4 giorni fa   Up 9 ore (healthy)     3000/tcp, 4000/tcp                                                         mastodon_web_1
5484d4dd39b6   postgres:14-alpine                           „docker-entrypoint.s…”   4 giorni fa   Up 9 ore (healthy)     5432/tcp                                                                   mastodon_db_1
ecb2e7cbdc0b   redis:7-alpine                               „docker-entrypoint.s…”   4 giorni fa   Up 9 ore (healthy)     6379/tcp                                                                   mastodon_redis_1

c211bc93f368   cthulhoo/ttrss-fpm-pgsql-static:latest       „/bin/sh -c ${SCRIPT…”   4 giorni fa   Up 9 ore               9000/tcp                                                                   ttrss-docker_app_1

Il container Discourse è in esecuzione

==================== PLUGIN ===================
          - git clone https://github.com/discourse/docker_manager.git

Nessun plugin non ufficiale rilevato.

Vedi https://github.com/discourse/discourse/blob/main/lib/plugin/metadata.rb per l'elenco ufficiale.

========================================
Versione Discourse su talk.spielleiten.de: NON TROVATA
Versione Discourse su localhost: NON TROVATA

==================== INFORMAZIONI MEMORIA ====================
RAM (MB):

              totale    utilizzato      libero     condiviso    buffer       disponibile
Memoria:        7870        2292         141        4207        5436        1101
Swap:           2047         580        1467

==================== CONTROLLO SPAZIO DISCO ====================
---------- Spazio disco OS ----------
File system    Dimensione Usati Dispon. Usati% Montato su
/dev/sda2       109G     68G   36G   66% /
/dev/md0        3,7T    3,1T  581G   85% /mnt/raid

==================== INFORMAZIONI DISCO ====================
Disco /dev/sda: 111,81 GiB, 120034123776 Byte, 234441648 settori
Modello disco: Samsung SSD 840
Unità: settori di 1 * 512 = 512 Byte
Dimensione settore (logico/fisico): 512 Byte / 512 Byte
Dimensione I/O (min/ottimale): 512 Byte / 512 Byte
Tipo etichetta disco: gpt
Identificativo disco: F889FA6C-2FB7-44B6-8CDF-1E6A05B9E33D

Dispositivo       Inizio      Fine   Settori Dimensione Tipo
/dev/sda1         2048   1050623   1048576   512M EFI System
/dev/sda2      1050624 234440703 233390080 111,3G File system Linux

Disco /dev/sdb: 186,32 GiB, 200049647616 Byte, 390721968 settori
Modello disco: SAMSUNG HD200HJ
Unità: settori di 1 * 512 = 512 Byte
Dimensione settore (logico/fisico): 512 Byte / 512 Byte
Dimensione I/O (min/ottimale): 512 Byte / 512 Byte
Tipo etichetta disco: dos
Identificativo disco: 0x13e913e8

Dispositivo    Boot Inizio      Fine   Settori Dimensione Kn Tipo
/dev/sdb1          2048 390721967 390719920 186,3G 83 Linux

Disco /dev/sdc: 1,84 TiB, 2000398934016 Byte, 3907029168 settori
Modello disco: SAMSUNG HD203WI
Unità: settori di 1 * 512 = 512 Byte
Dimensione settore (logico/fisico): 512 Byte / 512 Byte
Dimensione I/O (min/ottimale): 512 Byte / 512 Byte
Tipo etichetta disco: dos
Identificativo disco: 0x00000000

Dispositivo      Boot Inizio       Fine   Settori Dimensione Kn Tipo
/dev/sdc1            63 3907024064 3907024002  1,8T fd Linux RAID Autodetect

Disco /dev/sde: 1,84 TiB, 2000398934016 Byte, 3907029168 settori
Modello disco: SAMSUNG HD203WI
Unità: settori di 1 * 512 = 512 Byte
Dimensione settore (logico/fisico): 512 Byte / 512 Byte
Dimensione I/O (min/ottimale): 512 Byte / 512 Byte
Tipo etichetta disco: dos
Identificativo disco: 0x54cd8732

Dispositivo      Boot Inizio       Fine   Settori Dimensione Kn Tipo
/dev/sde1            63 3907024064 3907024002  1,8T fd Linux RAID Autodetect

Disco /dev/sdd: 1,84 TiB, 2000398934016 Byte, 3907029168 settori
Modello disco: SAMSUNG HD203WI
Unità: settori di 1 * 512 = 512 Byte
Dimensione settore (logico/fisico): 512 Byte / 512 Byte
Dimensione I/O (min/ottimale): 512 Byte / 512 Byte
Tipo etichetta disco: dos
Identificativo disco: 0xd4a5e07f

Dispositivo      Boot Inizio       Fine   Settori Dimensione Kn Tipo
/dev/sdd1            63 3907024064 3907024002  1,8T fd Linux RAID Autodetect

Disco /dev/md0: 3,65 TiB, 4000792182784 Byte, 7814047232 settori
Unità: settori di 1 * 512 = 512 Byte
Dimensione settore (logico/fisico): 512 Byte / 512 Byte
Dimensione I/O (min/ottimale): 65536 Byte / 131072 Byte

==================== FINE INFORMAZIONI DISCO ====================

==================== FATTO! ====================

1 Mi Piace