Sto ancora avendo difficoltà con il nuovo processo di ‘pre-bundling’. Il bootstrap fallisce sulla mia istanza di test e non so perché. Si noti che si tratta di un setup con un database PostgreSQL esterno. I container vengono eseguiti dietro un haproxy come acceleratore SSL. Qui eseguo il bootstrap solo del container web_only. La versione di build corrente (prima del bootstrap) è 3.5.0.beta8-dev, Commits · discourse/discourse · GitHub
Questo è il file yml che attualmente fallisce:
# IMPORTANTE: IMPOSTA UNA PASSWORD SEGRETA in Postgres per l'utente Discourse
# TODO: cambiare SOME_SECRET in questo template
templates:
- "templates/web.template.yml"
## Decommenta la riga successiva per abilitare l'ascolto IPv6
#- "templates/web.ipv6.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/web.socketed.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 server web come Apache o nginx,
## vedi https://meta.discourse.org/t/17247 per i dettagli
expose:
- "80:80" # http
- "443:443" # https
# Usa la chiave 'links' per collegare i container tra loro, ovvero usa il flag Docker --link.
links:
- link:
name: redis
alias: data
# eventuali argomenti extra per Docker?
# docker_args:
params:
## Quale revisione Git dovrebbe utilizzare questo container? (default: tests-passed)
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_DEFAULT_LOCALE: de
## Quante richieste web simultanee sono supportate? Dipende dalla memoria e dai core della CPU.
## verrà impostato automaticamente dal bootstrap in base alle CPU rilevate, oppure puoi sovrascrivere
UNICORN_WORKERS: 4
## TODO: Il nome di dominio a cui risponderà questa istanza Discourse
DISCOURSE_HOSTNAME: 'forum2.netzwissen.de'
## Decommenta se vuoi che il container venga avviato con lo stesso
## hostname (opzione -h) specificato sopra (default "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Elenco di email separate da virgola che diventeranno amministratori e sviluppatori
## al primo esempio di registrazione 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'admin@netzwissen.de'
## TODO: Il server SMTP utilizzato per validare nuovi account e inviare notifiche
## INDIRIZZO SMTP, nome utente e password sono obbligatori
## ATTENZIONE: il carattere '#' nella password SMTP può causare problemi!
DISCOURSE_SMTP_ADDRESS: mail.netzwissen.de
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: discourse@netzwissen.de
DISCOURSE_SMTP_PASSWORD: [xxxxxxxxxxxxxxxxx}
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opzionale, default true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (richiesto da alcuni provider)
DISCOURSE_NOTIFICATION_EMAIL: discourse@netzwissen.de # (indirizzo da cui inviare le notifiche)
## Se hai aggiunto il template Lets Encrypt, decommenta qui sotto per ottenere un certificato SSL gratuito
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## configura la connettività ai database
DISCOURSE_DB_SOCKET: ''
DISCOURSE_DB_USERNAME: [xxxxxxxxxxx]
DISCOURSE_DB_NAME: [xxxxxxxxxxxxxxx]
DISCOURSE_DB_HOST: [xxxxxxxxxxxxxxx]
DISCOURSE_DB_PASSWORD: [xxxxxxxxxxxxxxx]
## caching redis sul container adiacente
DISCOURSE_REDIS_HOST: redis
## L'indirizzo CDN http o https per questa istanza Discourse (configurato per il pull)
## vedi https://meta.discourse.org/t/14857 per i dettagli
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## L'ID account e la chiave di licenza Maxmind geolocation IP per le ricerche di indirizzi IP
## vedi https://meta.discourse.org/t/-/173941 per i dettagli
#DISCOURSE_MAXMIND_ACCOUNT_ID: 123456
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
volumes:
- volume:
host: /mnt/data/discourse/shared/web-only
guest: /shared
- volume:
host: /mnt/data/discourse/shared/web-only/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
- git clone https://github.com/discourse/discourse-shared-edits.git
# alcuni plugin sono stati rimossi, poiché ora sono inclusi nel core
# https://meta.discourse.org/t/bundling-more-popular-plugins-with-discourse-core/373574
## = ora inclusi
## - git clone https://github.com/discourse/discourse-chat-integration.git
## - git clone https://github.com/discourse/discourse-openid-connect.git
## - git clone https://github.com/discourse/discourse-calendar.git
## - git clone https://github.com/angusmcleod/discourse-events.git
## - git clone https://github.com/discourse/discourse-data-explorer.git
## - git clone https://github.com/discourse/discourse-reactions.git
## - git clone https://github.com/discourse/discourse-chat.git
## - git clone https://github.com/discourse/discourse-ai.git
## - git clone https://github.com/discourse/discourse-topic-voting.git
## - git clone https://github.com/discourse/discourse-post-voting.git
## - git clone https://github.com/discourse/discourse-user-notes.git
## - git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-docs-card-filter.git
- git clone https://github.com/discourse/discourse-doc-categories.git
## - git clone https://github.com/discourse/discourse-assign.git
## - git clone https://github.com/discourse/discourse-templates.git
- git clone https://github.com/discourse/discourse-saved-searches.git
- git clone https://github.com/discourse/discourse-tooltips.git
- git clone https://github.com/discourse/discourse-category-experts.git
- git clone https://github.com/discourse/discourse-activity-pub.git
- git clone https://github.com/discourse/discourse-follow.git
- git clone https://github.com/nathan-nz/discourse-wikified-posts.git
- git clone https://github.com/discourse/discourse-whos-online.git
- git clone https://github.com/merefield/discourse-workflow.git
## Ricorda, questa è sintassi YAML: puoi avere solo un blocco con un nome
run:
- exec: echo "Inizio dei comandi personalizzati"
## Se vuoi configurare l'accesso con password per root, decommenta e modifica:
## Usa solo una delle seguenti righe:
#- exec: /usr/sbin/usermod -p 'PASSWORD_HASH' root
- exec: /usr/sbin/usermod -p "$(mkpasswd -m sha-256 'xxxxxxxxxxxxxxx')" root
## per l'operazione dietro un load balancer haproxy con nginx locale sul host del container
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: "types {"
to: |
set_real_ip_from 127.0.0.1/24;
set_real_ip_from 10.0.0.0/24;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
proxy_set_header Host $http_host;
proxy_set_header X-Request-Start "t=${msec}";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https; # sostituito $thescheme;
proxy_set_header X-Real-IP $remote_addr;
types {
## Se vuoi autorizzare utenti aggiuntivi, decommenta e modifica:
#- exec: ssh-import-id username
#- exec: ssh-import-id anotherusername
- exec: echo "Fine dei comandi personalizzati"
- exec: awk -F\# '{print $1;}' ~/.ssh/authorized_keys | awk 'BEGIN { print "Chiavi SSH autorizzate per questo container:"; } NF\u003e=2 {print $NF;}'
Anche quando aggiungo un blocco rm -rf nel file yml:
- rm -rf discourse-chat-integration
- rm -rf discourse-openid-connect
- rm -rf discourse-calendar
- rm -rf discourse-events
- rm -rf discourse-data-explorer
- rm -rf discourse-reactions
- rm -rf discourse-chat
- rm -rf discourse-ai
- rm -rf discourse-topic-voting
- rm -rf discourse-post-voting
- rm -rf discourse-user-notes
- rm -rf discourse-solved
- rm -rf discourse-assign
- rm -rf discourse-templates
Il bootstrap continua a fallire con:
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups.rb
/usr/local/bin/pups --stdin
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' fallito con return #<Process::Status: pid 669 exit 1>
Posizione del fallimento: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec fallito con i parametri {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
Interpretarei questo come un errore nella migrazione del database durante “bundle exec rake db:migrate”. Ma qual è la causa principale? Il database discourse2 ha già l’estensione vector richiesta per il plugin discourse-ai (già installato in precedenza):
postgres=# \c discourse2
psql (15.12 (Ubuntu 15.12-1.pgdg22.04+1), server 13.20 (Ubuntu 13.20-1.pgdg22.04+1))
Ora sei connesso al database "discourse2" come utente "postgres".
discourse2=# \dx
Lista delle estensioni installate
Name | Version | Schema | Description
----------+---------+------------+-------------------------------------------------------------------
hstore | 1.7 | public | tipo di dato per memorizzare insiemi di coppie (chiave, valore)
pg_trgm | 1.5 | public | misurazione della similarità del testo e ricerca di indici basata sui trigrammi
plpgsql | 1.0 | pg_catalog | linguaggio procedurale PL/pgSQL
unaccent | 1.1 | public | dizionario di ricerca testuale che rimuove gli accenti
vector | 0.8.0 | public | tipo di dato vettoriale e metodi di accesso ivfflat e hnsw
(5 righe)
In seguito vedo anche gli avvisi sui plugin, sebbene le righe “git clone” siano tutte commentate nel file yml:
---
HINT: Il plugin 'discourse-openid-connect' è ora incluso in Discourse e non dovrebbe essere incluso nella configurazione del tuo container.
Rimuovi la riga 'git clone https://github.com/discourse/discourse-openid-connect' dal tuo file containers/web_only.yml, quindi riprova.
Per ulteriori informazioni, vedi https://meta.discourse.org/t/373574
---
A dire il vero, ora sono un po’ perso :
…