Rm: no se puede eliminar '/var/run/postgresql': El directorio no está vacío

Después de tener un disco lleno y no poder mover mis imágenes, decidí borrar todo, iniciar un nuevo contenedor de discourse y usar la copia de seguridad.

Borré /var/discourse e hice un docker system prune -a.

Luego seguí la guía oficial. Pero… algo va mal:

./launcher rebuild app
Se detecta la arquitectura x86_64.
Asegurando que el lanzador esté actualizado
Solicitando desde origin
El lanzador está actualizado
2.0.20230222-0048: Extrayendo de discourse/base
Digest: sha256:XXXX
Estado: La imagen está actualizada para 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 -- : Leyendo desde stdin
I, [2023-03-04T12:04:27.486188 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2023-03-04T12:04:28.456925 #1]  INFO -- : Generando locales (¡esto puede tardar un poco!)...
Generación completa.

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: no se puede eliminar '/var/run/postgresql': El directorio no está vacío
I, [2023-03-04T12:04:28.616079 #1]  INFO -- :


FALLÓ
--------------------
Pups::ExecError: rm -fr /var/run/postgresql falló con retorno #<Process::Status: pid 16 exit 1>
Ubicación del fallo: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec falló con los parámetros "rm -fr /var/run/postgresql"
bootstrap falló con código de salida 1
** FALLÓ EL ARRANQUE ** por favor, desplázate hacia arriba y busca mensajes de error anteriores, puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.

¿Alguien puede ayudarme con esto?

1 me gusta

¿Detuviste el contenedor antiguo?

docker stop app
docker rm app

2 Me gusta

Bueno, aunque eso sería muy propio de mí, esta vez no es tan simple:

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

Creo que el problema podría ser que moví todo desde la ubicación predeterminada anterior de las imágenes de Docker a un nuevo lugar y ahora el contenedor de Docker de Discourse no puede acceder al sistema de archivos que espera.

1 me gusta

/var/run/postgresql no existe.

No tengo idea de por qué esto ya no funciona. :cry:

1 me gusta

¿Cómo se ve tu app.yml?

1 me gusta
$# cat app.yml
## esta es la plantilla de contenedor Docker de Discourse todo en uno e independiente
##
## Después de realizar cambios en este archivo, DEBE reconstruir
## /var/discourse/launcher rebuild app
##
## ¡TENGA MUCHO CUIDADO AL EDITAR!
## ¡LOS ARCHIVOS YAML SON EXTREMADAMENTE SENSIBLES A ERRORES DE ESPACIO BLANCO O ALINEACIÓN!
## visite http://www.yamllint.com/ para validar este archivo según sea necesario

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomente estas dos líneas si desea agregar Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"

## ¿qué puertos TCP/IP debe exponer este contenedor?
## Si desea que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulte https://meta.discourse.org/t/17247 para obtener detalles
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`)      ## Ingrese su dominio aquí
  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`)      ## Ingrese su dominio aquí
  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"

  ## Establezca db_shared_buffers en un máximo del 25% de la memoria total.
  ## se establecerá automáticamente mediante bootstrap según la RAM detectada, o puede anularlo
  #db_shared_buffers: "256MB"

  ## puede mejorar el rendimiento de la clasificación, pero aumenta el uso de memoria por conexión
  #db_work_mem: "40MB"

  ## ¿Qué revisión de Git debe usar este contenedor? (predeterminado: 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

  ## ¿Cuántas solicitudes web concurrentes se admiten? Depende de la memoria y los núcleos de CPU.
  ## se establecerá automáticamente mediante bootstrap según las CPU detectadas, o puede anularlo
  #UNICORN_WORKERS: 3

  ## TODO: El nombre de dominio al que responderá esta instancia de Discourse
  ## Requerido. Discourse no funcionará con un número IP simple.
  DISCOURSE_HOSTNAME: talk.spielleiten.de

  ## Descomente si desea que el contenedor se inicie con el mismo
  ## nombre de host (-h opción) que se especifica arriba (predeterminado "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de correos electrónicos separados por comas que se convertirán en administradores y desarrolladores
  ## en el registro inicial, por ejemplo, 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'XXX'

  ## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
  # Se requieren la DIRECCIÓN SMTP, el nombre de usuario y la contraseña
  # ADVERTENCIA: ¡el carácter '#' en la contraseña SMTP puede causar problemas!
[eliminado por razones de privacidad]

  ## La dirección CDN http o https para esta instancia de Discourse (configurada para extraer)
  ## consulte https://meta.discourse.org/t/14857 para obtener detalles
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## La clave de licencia de GeoIP de MaxMind para la búsqueda de direcciones IP
  ## consulte https://meta.discourse.org/t/-/137387/23 para obtener detalles
  DISCOURSE_MAXMIND_LICENSE_KEY: XXX

## El contenedor Docker no tiene estado; todos los datos se almacenan en /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Los plugins van aquí
## consulte https://meta.discourse.org/t/19157 para obtener detalles
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Cualquier comando personalizado para ejecutar después de la compilación
run:
  - exec: echo "Comienzo de comandos personalizados"
  ## Si desea establecer la dirección de correo electrónico 'De' para su primer registro, descomente y cambie:
  ## Después de recibir el primer correo electrónico de registro, vuelva a comentar la línea. Solo necesita ejecutarse una vez.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin de comandos personalizados"

Esto funcionó hasta que cambié daemon.json:

"data-root": "/srv/new-drive/new-docker-root"
1 me gusta

Entonces ese es tu problema. Esto es un problema de Docker, no de Discourse.

Mi suposición es que tiene que ver con los permisos o que la unidad no está ahí de alguna manera.

1 me gusta

Supongo que sí. ¡Pero todos los demás servicios en Docker funcionan como se esperaba! Es solo Discourse el que no intenta acceder a la nueva raíz de datos. Por eso esperaba encontrar una solución aquí.

2 Me gusta

Puede que intentes cambiar los volúmenes a un lugar distinto de /var/discourse/shared/standalone

Presumo que ya has eliminado /var/discourse/shared?

1 me gusta

Hice un rm -R /var/discourse y seguí la guía de instalación oficial como uno de los primeros pasos.

¡Intentaré eso!

1 me gusta

Intenté tanto un directorio en el mismo disco como una carpeta en “data-root”, nada cambió.

¿Por qué falla el comando rm? Supongo que este sigue siendo el sistema de archivos del sistema operativo (en lugar de dentro del contenedor), y esa operación funciona si repito el comando en el shell.

2 Me gusta

Creo que ese comando de eliminación está dentro del contenedor que está construyendo.

No creo que tenga más ideas.

1 me gusta

¡Muchas, muchas gracias de todos modos!

2 Me gusta

Ese directorio se mapea a /var/discourse/shared/standalone/postgres_run en el host.

2 Me gusta
# ls -lsa /var/discourse/shared/standalone
total 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/
total 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 ..

¿Es esto lo que esperaría? df muestra espacio suficiente, por lo que no es un problema de disco lleno.

# ./discourse-doctor
DISCOURSE DOCTOR Mo 6. Mär 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

Found containers/app.yml

==================== YML SETTINGS ====================
[eliminado por motivos de privacidad]

==================== DOCKER INFO ====================
DOCKER VERSION: Docker version 20.10.12, build 20.10.12-0ubuntu2~20.04.1

DOCKER PROCESSES (docker ps -a)

CONTAINER ID   IMAGE                                        COMMAND                  CREATED      STATUS                 PORTS                                                                      NAMES
f6d3f502384f   cthulhoo/ttrss-fpm-pgsql-static:latest       “/opt/tt-rss/updater…”   4 days ago   Up 9 hours             9000/tcp                                                                   ttrss-docker_updater_1
fb0c774b31cb   cthulhoo/ttrss-web-nginx:latest              “/docker-entrypoint.…”   4 days ago   Up 9 hours (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 days ago   Up 9 hours             9000/tcp                                                                   ttrss-docker_backups_1
c211bc93f368   cthulhoo/ttrss-fpm-pgsql-static:latest       “/bin/sh -c ${SCRIPT…”   4 days ago   Up 9 hours             9000/tcp                                                                   ttrss-docker_app_1
4ecb89c6bb9f   postgres:12-alpine                           “docker-entrypoint.s…”   4 days ago   Up 9 hours             5432/tcp                                                                   ttrss-docker_db_1
c668703d805d   traefik:latest                               “/entrypoint.sh trae…”   4 days ago   Up 9 hours             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 days ago   Up 9 hours (healthy)   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp                                  paperless-web
d2fbf8682efb   postgres:13                                  “docker-entrypoint.s…”   4 days ago   Up 9 hours             5432/tcp                                                                   paperless-db
8284f03fdcd0   redis:6.0                                    “docker-entrypoint.s…”   4 days ago   Up 9 hours             6379/tcp                                                                   paperless-redis
ab29487743b0   tootsuite/mastodon                           “/usr/bin/tini -- no…”   4 days ago   Up 9 hours (healthy)   3000/tcp, 4000/tcp                                                         mastodon_streaming_1
a117f5e785f8   tootsuite/mastodon                           “/usr/bin/tini -- bu…”   4 days ago   Up 9 hours (healthy)   3000/tcp, 4000/tcp                                                         mastodon_sidekiq_1
5a4a7e99230c   tootsuite/mastodon                           “/usr/bin/tini -- ba…”   4 days ago   Up 9 hours (healthy)   3000/tcp, 4000/tcp                                                         mastodon_web_1
5484d4dd39b6   postgres:14-alpine                           “docker-entrypoint.s…”   4 days ago   Up 9 hours (healthy)   5432/tcp                                                                   mastodon_db_1
ecb2e7cbdc0b   redis:7-alpine                               “docker-entrypoint.s…”   4 days ago   Up 9 hours (healthy)   6379/tcp                                                                   mastodon_redis_1

c211bc93f368   cthulhoo/ttrss-fpm-pgsql-static:latest       “/bin/sh -c ${SCRIPT…”   4 days ago   Up 9 hours             9000/tcp                                                                   ttrss-docker_app_1

Discourse container app is running

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

No non-official plugins detected.

See https://github.com/discourse/discourse/blob/main/lib/plugin/metadata.rb for the official list.

========================================
Discourse version at talk.spielleiten.de: NOT FOUND
Discourse version at localhost: NOT FOUND

==================== MEMORY INFORMATION ====================
RAM (MB):

              total        used        free      shared    tmpfs    available
Mem:        7870        2292         141        4207        5436        1101
Swap:        2047         580        1467

==================== DISK SPACE CHECK ====================
---------- OS Disk Space ----------
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      114399988 71723104  37718884  66% /
/dev/md0      3906981376 3250374144  595001856  85% /mnt/raid

==================== DISK INFORMATION ====================
Disk /dev/sda: 111.81 GiB, 120034123776 bytes, 234441648 sectors
Disk model: Samsung SSD 840
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: F889FA6C-2FB7-44B6-8CDF-1E6A05B9E33D

Device      Start       End   Sectors  Size Type
/dev/sda1    2048   1050623   1048576   512M EFI System
/dev/sda2 1050624 234440703 233390080 111.3G Linux filesystem


Disk /dev/sdb: 186.32 GiB, 200049647616 bytes, 390721968 sectors
Disk model: SAMSUNG HD200HJ
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x13e913e8

Device   Boot Start       End   Sectors  Size Id Type
/dev/sdb1       2048 390721967 390719920  186.3G 83 Linux


Disk /dev/sdc: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: SAMSUNG HD203WI
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00000000

Device   Boot Start       End   Sectors  Size Id Type
/dev/sdc1       63 3907024064 3907024002  1.8T fd Linux RAID autodetect


Disk /dev/sde: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: SAMSUNG HD203WI
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x54cd8732

Device   Boot Start       End   Sectors  Size Id Type
/dev/sde1       63 3907024064 3907024002  1.8T fd Linux RAID autodetect


Disk /dev/sdd: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: SAMSUNG HD203WI
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd4a5e07f

Device   Boot Start       End   Sectors  Size Id Type
/dev/sdd1       63 3907024064 3907024002  1.8T fd Linux RAID autodetect


Disk /dev/md0: 3.65 TiB, 4000792182784 bytes, 7814047232 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 131072 bytes

==================== END DISK INFORMATION ====================

==================== DONE! ====================

1 me gusta