Apt-get update fallisce all'interno del container yarn repo non firmato

Ho un’azione di GitHub che crea immagini e fallisce quando tenta un apt-get update. Sto ancora cercando di capire cosa stia succedendo, ma in un’installazione che ho fatto 2 ore fa, ottengo questo errore se eseguo un apt-get update all’interno del container.

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
  Le seguenti firme non sono valide: 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: Le seguenti firme non sono valide: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
E: The repository 'https://dl.yarnpkg.com/debian stable InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
1 Mi Piace

Non vedo errori nella nostra CI di creazione delle immagini giornaliera. Puoi condividere l’output di cat /VERSION dall’interno del container?

Giuro che questa è un’installazione standard. . .

# cat /VERSION
2.0.20230116

Sto ancora controllando il mio CI per vedere se ho qualcosa di stupido lì (il che è assolutamente possibile). Non mi è chiaro cosa stia facendo un apt-get update.

MODIFICA: Il mio CI ha un template che installa vim. Esegue un apt-get update. Niente in un’installazione normale esegue un apt-get update che io possa vedere, quindi questo spiega perché il tuo CI non sta fallendo.

Molti dei template di importazione e i template di aggiornamento di postgres (elencati di seguito) eseguono un apt-get update, quindi questo sarà un problema a un certo punto.

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 Mi Piace

Sì, questa sarebbe la mia prossima domanda, poiché eseguire un aggiornamento del genere non è predefinito e introdurrà variazioni difficili da rintracciare, perché la maggior parte dei siti utilizza un sistema operativo statico e si basa su una nuova immagine per aggiornare le cose a livello di sistema operativo.

Se il repository apt di yarn dovesse rompersi, presumerei che si romperà anche il nostro CI.

Posso verificarlo la prossima settimana. Forse abbiamo bisogno di rilasciare una nuova immagine di base per questo.

1 Mi Piace

Va bene. Solo per confermare, devo creare un nuovo contenitore di importazione phpbb3 e non posso. Ecco come risolvere il problema.

Ecco questo:

Ma raccomanda di usare curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - ma apt-key è deprecato.

Se faccio questo nel contenitore:

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

Poi posso fare questo:

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

Allo stesso modo, se aggiungo

          - 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

prima di apt-get update in templates/import/phpbb3.template.yml sono in grado di creare un nuovo contenitore.

3 Mi Piace

@Falco Mi scuso per il mio post duplicato!

@pfaffman Grazie mille! Confermo che questa soluzione alternativa funziona anche con mysql-dep.template.yml.

2 Mi Piace

Sto riscontrando errori simili durante un aggiornamento.

Err:7 https://dl.yarnpkg.com/debian stable InRelease
  Le seguenti firme non sono valide: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
Get:13 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg/main amd64 Packages [268 kB]
Reading package lists...
FAILED

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

Pups::ExecError: cd /var/www/discourse && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libsqlite3-dev failed with return #<Process::Status: pid 532 exit 100>

Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'

exec failed with the params {"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'"]}

Da discourse-doctor ottengo:

Checking your domain name . . .

Connection to xxx succeeded.

You should probably remove any non-standard plugins and rebuild.

Attempting to restart existing container. . .

x86_64 arch detected.

WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml

starting up existing container

+ /usr/bin/docker start app

Error response from daemon: driver failed programming external connectivity on endpoint app (c143632e34e1ae05e48759bdf163b4bbe5dc9aaf895f1fb7521f7e3784c26577): Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use

Error: failed to start containers: app

Failed to restart the container.

C’è qualcosa che potrei fare oltre a una nuova installazione?

Ho spostato questo argomento qui @fidelio per mantenere i report raggruppati. :+1:

2 Mi Piace

Essendo un ‘dilettante ambizioso’, una domanda veloce:
Come eseguo il comando Curl ‘all’interno del container’?

In un post precedente ho incluso che il comando curl può essere incluso nel template che esegue apt-get. Apt-get update fails inside container yarn repo not signed - #6 by rahim123

@fidelio Ciao, devi connetterti a un altro database come SQLite dalla tua istanza Discourse, ovvero stai eseguendo un’importazione di dati da un altro forum? Altrimenti puoi disabilitare quella funzionalità e il normale container dell’app Discourse si ricostruirà correttamente.

La mia ipotesi è che non sia stato aggiornato a PG 13 e stia usando il modello pg12? Questo è un problema che dovrebbe comunque essere risolto. Ed è una buona scommessa che il sistema operativo debba essere aggiornato e che la migrazione a una nuova VM sia la soluzione.

1 Mi Piace

Ciao @rahim123. No, non ho bisogno di fare nessuna delle due cose in questa fase. Come disabilito la funzionalità?

@pfaffman Ah, mi sembrava strano che il suo file di log degli errori si lamentasse del tentativo di installare libsqlite3-dev, o Discourse lo usa normalmente per qualcosa?

@fidelio Potresti incollare qui la sezione templates: del tuo file /var/discourse/containers/app.yml? Assicurati di non includere password presenti più in basso nel file. Puoi anche eseguire /var/discourse/discourse-doctor e ti aiuterà a generare un report condivisibile pubblicamente su come è configurato il tuo sistema.

1 Mi Piace

@rahim123 Certo, ecco il report di discourse-doctor:

Found containers/app.yml
==================== IMPOSTAZIONI 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

==================== INFORMAZIONI DOCKER ====================
VERSIONE DOCKER: Docker version 18.06.1-ce, build e68fc7a

PROCESSI DOCKER (docker ps -a)

CONTAINER ID        IMMAGINE                           COMANDO             CREATO              STATO               PORTE                                      NOMI
ce58652241d9        local_discourse/app             “/sbin/boot”        2 settimane fa       Attivo da 14 minuti   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
8e6b8ec432b4        local_discourse/mail-receiver   “/sbin/boot”        11 mesi fa          Attivo da 11 mesi     0.0.0.0:25->25/tcp                         mail-receiver

ce58652241d9        local_discourse/app             “/sbin/boot”        2 settimane fa       Attivo da 14 minuti   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app

Il container Discourse app è in esecuzione

==================== PLUGIN ===================
          - 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

ATTENZIONE:
Hai quelli che sembrano essere plugin non ufficiali.
Se stai riscontrando problemi, dovresti disabilitarli e riprovare la ricostruzione.

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

========================================
Versione Discourse su community.bfs-filmeditor.de: TYPO3 CMS
Versione Discourse su localhost: TYPO3 CMS

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

              totale        usato        libero      condiviso  buff/cache   disponibile
Mem:           3944        1272        1236        1067        1436        1364
Swap:             0           0           0

==================== CONTROLLO SPAZIO SU DISCO ====================
---------- Spazio su disco del sistema operativo ----------
Filesystem      Dimensione  Usato  Disponibile  Uso% Montato su
/dev/vda1        78G   60G   18G  78% /

---------- Spazio su disco del container ----------
Filesystem      Dimensione  Usato  Disponibile  Uso% Montato su
overlay          78G   60G   18G  78% /
/dev/vda1        78G   60G   18G  78% /shared
/dev/vda1        78G   60G   18G  78% /var/log

==================== INFORMAZIONI DISCO ====================
Disco /dev/vda: 80 GiB, 85899345920 byte, 167772160 settori
Unità: settori di 1 * 512 = 512 byte
Dimensione settore (logica/fisica): 512 byte / 512 byte
Dimensione I/O (minima/ottimale): 512 byte / 512 byte
Tipo etichetta disco: gpt
Identificativo disco: C1F9A1FE-534C-4DAC-9299-5CC180C29DCE

Device      Start       End   Settori  Dimensione Tipo
/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

Le voci della tabella delle partizioni non sono nell'ordine del disco.

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

Ho disabilitato i messaggi rapidi ma non li ho ancora rimossi.

Per quanto ne so, penso che babble sia rotto da un po’ di tempo:

3 Mi Piace

Pensavo che discourse-doctor mostrasse quali template sono abilitati, a quanto pare no. Potresti anche pubblicare questo?

1 Mi Piace

Non lo fa. Anche se sembra una buona idea, è la prima volta che ricordo che fosse importante.

1 Mi Piace

Ecco qui:

 GNU nano 2.9.3                                                                         containers/app.yml                                                                                   
 
 
 ## questo è il template del container Docker di Discourse tutto in uno, standalone
 ##
 ## Dopo aver apportato modifiche a questo file, DEVI ricostruire
 ## /var/discourse/launcher rebuild app
 ##
 ## FAI *MOLTA* ATTENZIONE QUANDO MODIFICHI!
 ## I FILE YAML SONO ESTREMAMENTE 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"
 ## Commenta queste due righe se desideri aggiungere Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/import/mbox.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:
  - "80:80"   # http
  - "443:443" # https
 
 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, oppure puoi sovrascriverlo
  db_shared_buffers: "1024MB"
 
  ## 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:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en
 
  ## Quante richieste web concorrenti sono supportate? Dipende dalla memoria e dai core della CPU.
  ## verrà impostato automaticamente da bootstrap in base alle CPU rilevate, oppure puoi sovrascriverlo
  UNICORN_WORKERS: 4

Penso che questo sia il problema, prova a mettere un # davanti e a eseguire ./launcher rebuild app.

2 Mi Piace