Passaggio da container standalone a container web e dati separati

Sto cercando di implementare i container separati, ma con un database remoto. Ho seguito le istruzioni sopra e la guida per configurare un database PostgreSQL remoto. La configurazione funziona, ma mi chiedo perché ci siano due riferimenti identici (sotto web_only e data) allo stesso database. Questo mi fa pensare di stare sbagliando qualcosa e che il container web_only non stia nemmeno usando il container data.

Sto procedendo correttamente?

Ecco la mia configurazione.

Sotto web_only.yml ho aggiunto:

  DISCOURSE_DB_SOCKET: ''
  DISCOURSE_DB_USERNAME: REMOVE
  DISCOURSE_DB_PASSWORD: REMOVE
  DISCOURSE_DB_HOST: xxx.ondigitalocean.com
  DISCOURSE_DB_NAME: REMOVE
  DISCOURSE_DB_PORT: 25060
  DISCOURSE_DB_BACKUP_PORT: 25060
  DISCOURSE_REDIS_HOST: data

sotto data.yml

Ho rimosso postgres.template.yml

templates:
#  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"

Ho anche aggiunto quanto segue:

env:
  # assicurati che la locale esista nel container, potresti doverla installare
  LANG: en_US.UTF-8
  DISCOURSE_DB_USERNAME: REMOVE
  DISCOURSE_DB_PASSWORD: REMOVE
  DISCOURSE_DB_HOST: REMOVE.ondigitalocean.com
  DISCOURSE_DB_NAME: REMOVE
  DISCOURSE_DB_PORT: 25060
  DISCOURSE_DB_BACKUP_PORT: 25060

Se stai utilizzando un database remoto, non è necessario creare il contenitore dei dati che contiene un database. Tieni presente che sono necessari sia postgres che redis (quindi potresti aver bisogno del contenitore dei dati per questo).

1 Mi Piace

ma qui ho ottenuto solo 1 container in esecuzione senza alcun errore

Non so davvero cosa intendiate per ‘due container’, ma se presumete che due container significhino due istanze separate di Discourse, allora state cercando nella direzione sbagliata.

Questo articolo aiuta a configurare un container applicativo e un container database separati, il che è utile per gli utenti avanzati che cercano una certa flessibilità.

Se desiderate installare/ospitare due siti Discourse sulla stessa macchina, forse dovreste dare un’occhiata a Discourse multisite:
Multisite configuration with Docker

1 Mi Piace

Per container, intendo che puoi vedere due container in esecuzione quando digiti sulla macchina host:

docker ps

E in secondo luogo, per questo comando con due container, non ho trovato dove impostare il nome di dominio.

Quale container era in esecuzione? Se era ‘app’, allora no: stai eseguendo una versione vecchia di discourse-setup.

Esegui un git pull prima di procedere per assicurarti di utilizzare l’ultima versione di discourse-setup.

Se hai un container ‘data’ o ‘web-only’ in esecuzione, dovresti verificare cosa ha impedito l’avvio dell’altro. Di solito, il container ‘web-only’ non si avvia perché è già in esecuzione un processo (server web) sulla porta 80/443.

Sì, l’app
Oh no, ho clonato il codice sorgente da GitHub oggi.

Non l’ho provato personalmente, ma dato che @pfaffman è il genio che l’ha creato, forse può aiutarti.

Guardando il codice di discourse-setup su GitHub, non vedo nulla di evidente che possa impedire il corretto funzionamento.

Quale sistema operativo stai usando sul tuo server?

server ubuntu
Ho eseguito con successo un container standalone.
Al momento sto provando questo metodo: Success - New Multisite Install on Dedicated server using ServerPilot, Nginx and Apache

Stai cercando di realizzare un multisito o un multi-container?

Come ho detto, ho eseguito un forum autonomo per un mese. Quando ho voluto crearne uno nuovo, sono state esplorate diverse strade:

  1. Ho provato a eseguire un contenitore autonomo separato sullo stesso server, senza successo.
  2. Ho provato una configurazione multisito con Docker, con contenitori diversi per il web e il database, come descritto qui: Multisite configuration with Docker, senza successo.
  3. Ho provato la tua configurazione a 2 contenitori, senza successo.
  4. Sto provando questo: Success - New Multisite Install on Dedicated server using ServerPilot, Nginx and Apache; forse funziona.

Se vuoi solo eseguire un secondo container autonomo, dovrai modificare i file YAML per utilizzare una directory e una porta diversi. Probabilmente dovrai anche disabilitare Let’s Encrypt.

dopo aver risolto tutto questo, voglio scrivere alcuni tutorial per principianti

1 Mi Piace

Solo per informazione, se vuoi eseguire dei benchmark sulle prestazioni, non dovresti farlo su una macchina di produzione. È meglio avviare un VPS separato e utilizzarlo per i benchmark.

Cercare di eseguire due istanze separate di Discourse sulla stessa macchina potrebbe portarti a un’installazione gravemente compromessa, e questo non è ideale.

Quel comando creerà contenitori separati per i dati e per il web solo se non esiste un file app.yml al momento dell’esecuzione. Non creerà due contenitori web.

1 Mi Piace

Prima di eseguire questo comando, sembra che app.yml sia già presente.

Penso che questo sia molto cruciale, dovrebbe essere aggiunto all’OP e possibilmente anche su GitHub?

Penso di aver dovuto lasciare questa funzione non documentata. E, in realtà, non è d’aiuto spostarsi verso una configurazione a due contenitori, quindi probabilmente non appartiene affatto qui.

1 Mi Piace

Forse una sezione dedicata a #guida?

Non deve essere molto dettagliata, ma può essere molto utile per chi vuole iniziare a esplorare le funzionalità avanzate di Discourse.

2 Mi Piace

Forse sì. È di grande aiuto e, come discourse-setup, è destinato a uno scopo molto specifico: una nuova installazione molto standard. I miei script di installazione lo usano da parecchio tempo. Può essere un modo semplice per passare a due container, se si è disposti a eseguire un backup del vecchio container e ripristinarlo sul nuovo.

La mia preoccupazione è sempre stata che sarebbe stato difficile da supportare, poiché persone che non lo capiscono proveranno a usarlo e poi non saranno in grado di utilizzare alcuna documentazione, dato che “rebuild app” non funzionerà più, e sapere quando è necessario ricostruire il container del database è anch’esso complicato. Recentemente ho avuto un fallimento nella ricostruzione perché era richiesto Redis 3.0 e ora serve la versione 4.0. Inoltre, anche PostgreSQL ha dovuto essere aggiornato, il che richiedeva di seguire una sequenza di passaggi, ma bisognava sapere quando ricostruire il container dei dati e quando ricostruire il container web, e come modificare il percorso da quello consigliato. Tutto è andato liscio come l’olio – per me, ma cercare di spiegarlo a qualcuno che non sa cosa sia bash in un forum sarebbe frustrante per tutti.

Credo che sia meglio mantenere alta la barriera per creare un’installazione non standard, per proteggere le persone da se stesse.

3 Mi Piace