Apt-get update échoue dans le conteneur, le dépôt yarn n'est pas signé

J’ai une action github qui crée des images et elle échoue lorsqu’elle essaie de faire un apt-get update. Je cherche encore à comprendre ce qui se passe, mais lors d’une installation que j’ai faite il y a 2 heures, j’obtiens cette erreur si je fais un apt-get update à l’intérieur du conteneur.

root@monstera-web-only:/# apt-get update
Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB]
Get:2 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
Get:3 http://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Get:4 http://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]
Get:5 http://deb.debian.org/debian bullseye-backports InRelease [49.0 kB]
Get:6 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg InRelease [91.7 kB]
Get:7 http://deb.debian.org/debian bullseye/main amd64 Packages [8,183 kB]
Err:2 https://dl.yarnpkg.com/debian stable InRelease
  Les signatures suivantes étaient invalides : EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
Get:8 http://deb.debian.org/debian-security bullseye-security/main amd64 Packages [216 kB]
Get:9 http://deb.debian.org/debian bullseye-updates/main amd64 Packages [14.6 kB]
Get:10 http://deb.debian.org/debian bullseye-backports/main amd64 Packages [384 kB]
Get:11 https://deb.nodesource.com/node_18.x bullseye InRelease [4,586 B]
Get:12 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg/main amd64 Packages [268 kB]
Get:13 https://deb.nodesource.com/node_18.x bullseye/main amd64 Packages [774 B]
Reading package lists... Done
W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: Les signatures suivantes étaient invalides : EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
E: Le dépôt « https://dl.yarnpkg.com/debian stable InRelease » n'est pas signé.
N: La mise à jour depuis un tel dépôt ne peut pas être effectuée de manière sécurisée, et est par conséquent désactivée par défaut.
N: Voir la page man apt-secure(8) pour les détails sur la création de dépôts et la configuration utilisateur.
1 « J'aime »

Je ne vois aucune erreur dans notre CI de construction d’images quotidienne. Pouvez-vous partager la sortie de cat /VERSION depuis l’intérieur du conteneur ?

Je jure que c’est une installation standard. . .

# cat /VERSION
2.0.20230116

Je regarde toujours mon CI pour voir si j’ai quelque chose de stupide là-bas (ce qui est tout à fait possible). Je ne comprends pas ce qui fait un apt-get update.

EDIT : Mon CI a un modèle qui installe vim. Il fait un apt-get update. Rien dans une installation normale ne fait un apt-get update que je puisse voir, donc cela explique pourquoi votre CI ne échoue pas.

Beaucoup des modèles d’importation et des modèles de mise à niveau postgres (listés ci-dessous) font un apt-get update, donc ce sera un problème à un moment donné.

root@monstera:/var/discourse# grep -lr 'apt-get update'
templates/postgres.9.5.template.yml
templates/postgres.13.template.yml
templates/postgres.template.yml
templates/import/mbox.template.yml
templates/import/mysql-dep.template.yml
templates/import/vanilla.template.yml
templates/import/chrome-dep.template.yml
templates/import/phpbb3.template.yml
templates/postgres.10.template.yml
templates/postgres.12.template.yml
image/base/slim.Dockerfile
1 « J'aime »

Ouais, ce serait ma prochaine question car exécuter une mise à jour comme celle-ci n’est pas par défaut et introduira une variance difficile à suivre, car la plupart des sites utilisent un système d’exploitation statique et s’appuient sur une nouvelle image pour mettre à jour les éléments au niveau du système d’exploitation.

Si le dépôt apt de yarn casse, je suppose qu’il cassera aussi notre CI.

Je peux vérifier cela la semaine prochaine. Peut-être que nous devons publier une nouvelle image de base pour cela.

1 « J'aime »

Ça marche. Juste pour confirmer, je dois créer un nouveau conteneur d’importation phpbb3 et je ne peux pas. Voici comment le corriger.

Voici ceci :

Mais il est recommandé d’utiliser curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - mais apt-key est obsolète.

Si je fais ceci dans le conteneur :

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg -o /usr/share/keyrings/yarn-keyring.asc \
    && sed -i '1s;^deb;deb [signed-by=/usr/share/keyrings/yarn-keyring.asc];' /etc/apt/sources.list.d/yarn.list

Ensuite, je peux faire ceci :

root@monstera-web-only:/# apt-get update
Hit:1 https://deb.nodesource.com/node_18.x bullseye InRelease
Hit:2 http://deb.debian.org/debian bullseye InRelease
Get:3 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
Get:4 http://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Hit:5 http://deb.debian.org/debian bullseye-updates InRelease
Hit:6 http://deb.debian.org/debian bullseye-backports InRelease
Get:7 https://dl.yarnpkg.com/debian stable/main all Packages [10.9 kB]
Get:8 http://deb.debian.org/debian-security bullseye-security/main amd64 Packages [216 kB]
Hit:9 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg InRelease
Get:10 https://dl.yarnpkg.com/debian stable/main amd64 Packages [10.9 kB]
Fetched 286 kB in 0s (849 kB/s)
Reading package lists... Done

De même, si j’ajoute

          - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg -o /usr/share/keyrings/yarn-keyring.asc && sed -i '1s;^deb;deb [signed-by=/usr/share/keyrings/yarn-keyring.asc];' /etc/apt/sources.list.d/yarn.list

avant le apt-get update dans templates/import/phpbb3.template.yml, je suis capable de construire un nouveau conteneur.

3 « J'aime »

@Falco Désolé pour mon doublon !

@pfaffman Merci beaucoup ! Je confirme que cette solution de contournement fonctionne également avec le mysql-dep.template.yml.

2 « J'aime »

Je rencontre des erreurs similaires lors d’une mise à jour.

Err:7 https://dl.yarnpkg.com/debian stable InRelease
  Les signatures suivantes étaient invalides : EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
Get:13 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg/main amd64 Packages [268 kB]
Lecture des listes de paquets...
FAILED

--------------------

Pups::ExecError : cd /var/www/discourse && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libsqlite3-dev a échoué avec le retour #<Process::Status: pid 532 exit 100>

Emplacement de l'échec : /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'

exec a échoué avec les paramètres {"cd"=>"$home", "cmd"=>["apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libsqlite3-dev", "echo \"gem 'sqlite3'\" >> Gemfile", "su discourse -`Preformatted text`c 'bundle config unset deployment'", "su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'"]}

Depuis discourse-doctor, j’obtiens :

Vérification de votre nom de domaine . . .

Connexion à xxx réussie.

Vous devriez probablement supprimer tous les plugins non standard et reconstruire.

Tentative de redémarrage du conteneur existant. . .

Architecture x86_64 détectée.

AVERTISSEMENT : le fichier containers/app.yml est lisible par tous. Vous pouvez sécuriser ce fichier en exécutant : chmod o-rwx containers/app.yml

démarrage du conteneur existant

+ /usr/bin/docker start app

Réponse d'erreur du démon : le pilote n'a pas pu programmer la connectivité externe sur le point de terminaison app (c143632e34e1ae05e48759bdf163b4bbe5dc9aaf895f1fb7521f7e3784c26577) : Erreur de démarrage du proxy userland : listen tcp 0.0.0.0:443 : bind : address already in use

Erreur : échec du démarrage des conteneurs : app

Échec du redémarrage du conteneur.

Y a-t-il quelque chose que je puisse faire d’autre qu’une nouvelle installation ?

J’ai déplacé ceci vers ce sujet @fidelio afin de regrouper les rapports. :+1:

2 « J'aime »

En tant qu’« amateur ambitieux », une question rapide :
Comment exécuter la commande Curl « à l’intérieur du conteneur » ?

Dans un message ci-dessus, j’ai inclus que la commande curl peut être incluse dans le modèle qui fait apt-get. Apt-get update fails inside container yarn repo not signed - #6 by rahim123

@fidelio Bonjour, devez-vous vous connecter à une autre base de données comme SQLite depuis votre instance Discourse, c’est-à-dire effectuez-vous une importation de données depuis un autre forum ? Sinon, vous pouvez désactiver cette fonctionnalité et le conteneur d’application Discourse normal sera reconstruit sans problème.

Ma supposition est qu’il n’a pas mis à niveau vers PG 13 et qu’il utilise le modèle pg12 ? C’est un problème qui devrait être résolu de toute façon. Et il est fort probable que le système d’exploitation doive être mis à niveau et que le passage à une nouvelle VM soit la solution.

1 « J'aime »

Salut @rahim123 . Non, je n’ai pas besoin de faire l’une ou l’autre de ces choses à ce stade. Comment désactiver la fonctionnalité ?

@pfaffman Ah, il semblait étrange que son journal d’erreurs se plaigne d’essayer d’installer libsqlite3-dev, ou est-ce que Discourse l’utilise normalement pour quelque chose ?

@fidelio Pourriez-vous coller ici la section templates: de votre fichier /var/discourse/containers/app.yml ? Assurez-vous de ne pas inclure les mots de passe qui se trouvent plus bas dans le fichier. Vous pouvez également exécuter /var/discourse/discourse-doctor et il vous aidera à générer un rapport partageable publiquement sur la configuration de votre système.

1 « J'aime »

@rahim123 Bien sûr, voici le rapport discourse-doctor :

Containers/app.yml trouvé
==================== PARAMÈTRES YML ====================
DISCOURSE_HOSTNAME=community.bfs-filmeditor.de
SMTP_ADDRESS=in-v3.mailjet.com
DEVELOPER_EMAILS=xxx
SMTP_PASSWORD=xxx
SMTP_PORT=25
SMTP_USER_NAME=xxx
LETSENCRYPT_ACCOUNT_EMAIL=xxx

==================== INFORMATIONS DOCKER ====================
VERSION DOCKER : Docker version 18.06.1-ce, build e68fc7a

PROCESSUS DOCKER (docker ps -a)

CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS              PORTS                                      NAMES
ce58652241d9        local_discourse/app             « /sbin/boot »      Il y a 2 semaines   En cours (14 minutes) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
8e6b8ec432b4        local_discourse/mail-receiver   « /sbin/boot »      Il y a 11 mois      En cours (11 mois)    0.0.0.0:25->25/tcp                         mail-receiver

ce58652241d9        local_discourse/app             « /sbin/boot »      Il y a 2 semaines   En cours (14 minutes) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app

Le conteneur Discourse app est en cours d'exécution


==================== PLUGINS ====================
          - git clone https://github.com/discourse/docker_manager.git
          - git clone  https://github.com/davidtaylorhq/discourse-whos-online.git
          - git clone https://github.com/gdpelican/babble.git
          - git clone https://github.com/angusmcleod/discourse-quick-messages.git
          - git clone https://github.com/angusmcleod/discourse-events.git
          - git clone https://github.com/discourse/discourse-calendar.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/davidtaylorhq/discourse-telegram-notifications.git

AVERTISSEMENT :
Vous semblez avoir des plugins non officiels.
Si vous rencontrez des problèmes, vous devriez les désactiver et essayer de reconstruire à nouveau.

Voir https://github.com/discourse/discourse/blob/main/lib/plugin/metadata.rb pour la liste officielle.

========================================
Version Discourse sur community.bfs-filmeditor.de : TYPO3 CMS
Version Discourse sur localhost : TYPO3 CMS


==================== INFORMATIONS MÉMOIRE ====================
RAM (Mo) : 4039

              total        used        free      shared  buff/cache   available
Mem:           3944        1272        1236        1067        1436        1364
Swap:             0           0           0

==================== VÉRIFICATION ESPACE DISQUE ====================
---------- Espace disque du système d'exploitation ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        78G   60G   18G  78% /

---------- Espace disque du conteneur ----------
Filesystem      Size  Used Avail Use% Mounted on
overlay          78G   60G   18G  78% /
/dev/vda1        78G   60G   18G  78% /shared
/dev/vda1        78G   60G   18G  78% /var/log

==================== INFORMATIONS DISQUE ====================
Disque /dev/vda : 80 Gio, 85899345920 octets, 167772160 secteurs
Unités : secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique) : 512 octets / 512 octets
Taille d'E/S (minimale/optimale) : 512 octets / 512 octets
Type de table de partitions : gpt
Identifiant du disque : C1F9A1FE-534C-4DAC-9299-5CC180C29DCE

Device      Start       End   Sectors  Size Type
/dev/vda1  227328 167772126 167544799 79.9G Linux filesystem
/dev/vda14   2048     10239      8192    4M BIOS boot
/dev/vda15  10240    227327    217088  106M Microsoft basic data

Les entrées de la table de partitions ne sont pas dans l'ordre du disque.

==================== FIN INFORMATIONS DISQUE ====================

J’ai désactivé les messages rapides mais je ne les ai pas encore supprimés.

Pour information, je pense que babble est cassé depuis un certain temps :

3 « J'aime »

Je pensais que discourse-doctor montrait quels modèles sont activés, apparemment non. Pourriez-vous également poster ceci ?

1 « J'aime »

Il ne le fait pas. Bien que cela semble être une bonne idée, c’est la première fois dont je me souvienne que c’était important.

1 « J'aime »

Voici :

 GNU nano 2.9.3                                                                         containers/app.yml                                                                                   
 
 
 ## ceci 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 LA MODIFICATION !
 ## 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"
  - "templates/import/mbox.template.yml"
 ## quels ports TCP/IP ce conteneur doit-il exposer ?
 ## Si vous souhaitez que Discourse partage un port avec un autre serveur web tel qu'Apache ou nginx,
 ## voir https://meta.discourse.org/t/17247 pour plus de détails
 expose:
  - "80:80"   # http
  - "443:443" # https
 
 params:
  db_default_text_search_config: "pg_catalog.english"
 
  ## Définissez 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: "1024MB"
 
  ## 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:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en
 
  ## Combien de requêtes web simultanées 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: 4

C’est le problème je pense, essayez de mettre un # devant et de faire un ./launcher rebuild app.

2 « J'aime »