Aucune description

mdomenici e4a77ea3af Modificato per supporto senza file .env.yml il y a 1 an
bin e4a77ea3af Modificato per supporto senza file .env.yml il y a 1 an
.editorconfig 0da9eb48f6 Prima release il y a 4 ans
.gitignore 75c223c784 Fixati percorsi e aggiunti file mancanti il y a 4 ans
README.md a8ef86e39a Correzione nel testo il y a 1 an
package.json d3ed9bf168 Aggiornata versione file README.md il y a 1 an

README.md

dockerize-project

Hook

Per ogni servizio docker, vengono eseguiti i seguenti Hook:

  • prepare: eseguito prima della build e/o run dei container docker
    • prepare.before
    • prepare.before.<env>
    • prepare
    • prepare.<env>
    • prepare.after
    • prepare.after.<env>
  • start: eseguito dopo il run dei container docker
    • start.before
    • start.before.<env>
    • start
    • start.<env>
    • start.after
    • start.after.<env>

Ogni singolo hook prevede l'esistenza di un file <hook>.js all'interno della folder del servizio docker.

Alcuni esempi di modulo:

// servizio/prepare.before.dev.js
module.exports = ({ log, service, shell }) => {
  log("Questo è un esempio di prepare");
  try {
    shell("mkdir dir");
  } catch (code) {
    throw "Impossibile creare la directory";
  }
};
// servizio/start.after.dev.js
module.exports = ({ log, service, shell, exec }) => {
  log("Questo è un esempio di start");
  return Promise.resolve()
    .then(() => {
      return exec("npm i");
    });
    .then(() => {
      return exec("npm update");
    });
    .then(() => {
      return exec("composer install");
    });
};

La funzione exec è disponibile solo per l'hook start e consente di eseguire codice shell dentro il container già in esecuzione.

La funzione shell consente di eseguire codice shell sulla macchina host. In caso di ritorno del programma shell diverso da 0, la funzione lancia un'eccezione.

NB: è responsabilità del programmatore gestire eventuali errori derivanti dai comandi eseguiti nei propri script.

Per impedire la prosecuzione del processo di avvio dei container docker, da dentro agli script di hook di tipo prepare è sufficiente lanciare una eccezione (throw "Messaggio di errore") oppure restituire una rejected Promise (return Promise.reject("Messaggio di errore")).

Upgrades

V2.2.0 - 2023-08-28

Con l'avvento di docker v2, si sono presentate notevoli modifiche in merito ai comandi docker-compose, non più compatibili con la precedente v1. In seguito a tali cambiamenti sono state aggiornate le dipendenze nel file di configurazione package.json ed è stato rimosso completamente il supporto per la modifica del file /etc/hosts in ambiente dev.

Quanto detto nel paragrafo Hook rimane valido e invariato.