Après avoir eu un disque plein et sans pouvoir déplacer mes images, j’ai décidé de tout supprimer, de créer un nouveau conteneur discourse et d’utiliser la sauvegarde.
J’ai supprimé /var/discourse et fait un docker system prune -a.
Ensuite, j’ai suivi le guide officiel. Mais… quelque chose ne va pas :
./launcher rebuild app
x86_64 arch detected.
Ensuring launcher is up to date
Demande à partir d'origin
Launcher est à jour
2.0.20230222-0048: Pulling from discourse/base
Digest: sha256:XXXX
Status: Image is up to date for 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 -- : Reading from stdin
I, [2023-03-04T12:04:27.486188 #1] INFO -- : > locale-gen $LANG && update-locale
I, [2023-03-04T12:04:28.456925 #1] INFO -- : Generating locales (this might take a while)...
Generation complete.
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: cannot remove '/var/run/postgresql': Directory not empty
I, [2023-03-04T12:04:28.616079 #1] INFO -- :
FAILED
--------------------
Pups::ExecError: rm -fr /var/run/postgresql failed with return #<Process::Status: pid 16 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params "rm -fr /var/run/postgresql"
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
$# cat app.yml
## C'est le modèle de conteneur Docker Discourse tout-en-un et autonome
##
## Après avoir apporté des modifications à ce fichier, vous DEVEZ reconstruire
## /var/discourse/launcher rebuild app
##
## SOYEZ *TRÈS* PRUDENT LORS DE L'ÉDITION !
## LES FICHIERS YAML SONT EXTRÊMEMENT SENSIBLES AUX ERREURS D'ESPACEMENT OU D'ALIGNEMENT !
## visitez http://www.yamllint.com/ pour valider ce fichier si nécessaire
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
## quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## voir https://meta.discourse.org/t/17247 pour plus de détails
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`) ## Entrez votre domaine ici
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`) ## Entrez votre domaine ici
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"
## Définir db_shared_buffers à un maximum de 25% de la mémoire totale.
## sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez le remplacer
#db_shared_buffers: "256MB"
## peut améliorer les performances de tri, mais augmente l'utilisation de la mémoire par connexion
#db_work_mem: "40MB"
## Quelle révision Git ce conteneur doit-il utiliser ? (défaut : 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
## Combien de requêtes web concurrentes sont prises en charge ? Dépend de la mémoire et des cœurs CPU.
## sera défini automatiquement par bootstrap en fonction des CPU détectés, ou vous pouvez le remplacer
#UNICORN_WORKERS: 3
## TODO : Le nom de domaine auquel cette instance Discourse répondra
## Obligatoire. Discourse ne fonctionnera pas avec un simple numéro IP.
DISCOURSE_HOSTNAME: talk.spielleiten.de
## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
## nom d'hôte (-h option) que celui spécifié ci-dessus (par défaut "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO : Liste d'e-mails séparés par des virgules qui seront rendus administrateurs et développeurs
## lors de la première inscription, par exemple 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'XXX'
## TODO : Le serveur de messagerie SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
# L'ADRESSE SMTP, le nom d'utilisateur et le mot de passe sont requis
# ATTENTION, le caractère '#' dans le mot de passe SMTP peut causer des problèmes !
[supprimé pour des raisons de confidentialité]
## L'adresse CDN http ou https pour cette instance Discourse (configurée pour tirer)
## voir https://meta.discourse.org/t/14857 pour plus de détails
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## La clé de licence du serveur Maxmind pour la recherche d'adresses IP
## voir https://meta.discourse.org/t/-/137387/23 pour plus de détails
DISCOURSE_MAXMIND_LICENSE_KEY: XXX
## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour plus de détails
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Toutes les commandes personnalisées à exécuter après la construction
run:
- exec: echo "Début des commandes personnalisées"
## Si vous souhaitez définir l'adresse e-mail 'De' pour votre première inscription, décommentez et modifiez :
## Après avoir reçu le premier e-mail d'inscription, commentez à nouveau la ligne. Elle ne doit s'exécuter qu'une seule fois.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Fin des commandes personnalisées"
Cela a fonctionné jusqu’à ce que je modifie daemon.json :
Je suppose. Mais tous les autres services dans dockers fonctionnent comme prévu ! C’est juste discourse qui n’essaie pas d’accéder au nouveau data-root.
C’est pourquoi j’espérais trouver une solution ici.
J’ai essayé un répertoire sur le même disque ainsi qu’un dossier dans « data-root » - rien n’a changé.
Pourquoi la commande rm échoue-t-elle ? Je suppose qu’il s’agit toujours du système de fichiers du système d’exploitation (par opposition à l’intérieur du conteneur) - et que cette opération fonctionne si je répète la commande dans le shell.
# ls -lsa /var/discourse/shared/standalone
total 16
4 drwxr-xr-x 4 root root 4096 Mar 6 08:34 .
4 drwxr-xr-x 3 root root 4096 Mar 6 08:34 ..
4 drwxr-xr-x 3 root root 4096 Mar 6 08:34 log
4 drwxrwxr-x 2 systemd-resolve systemd-timesync 4096 Mar 6 08:34 postgres_run
# ls -lsa /var/discourse/shared/standalone/postgres_run/
total 8
4 drwxrwxr-x 2 systemd-resolve systemd-timesync 4096 Mar 6 08:34 .
4 drwxr-xr-x 4 root root 4096 Mar 6 08:34 ..
Est-ce que c’est ce à quoi vous vous attendiez ? df montre amplement d’espace, donc ce n’est pas un problème de disque plein.
…
# ./discourse-doctor
DISCOURSE DOCTOR Mon 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
Found containers/app.yml
==================== YML SETTINGS ====================
[deleted for privacy reasons]
==================== 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 buffers cached
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 114113240 71306204 37794364 66% /
/dev/md0 3907024064 3144016128 594984192 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 186G 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 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 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 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! ====================