Browse Source

Sostituito readme

Sistemi Informatici 4 years ago
parent
commit
4ad73fd8eb
1 changed files with 56 additions and 0 deletions
  1. 56 0
      README.md

+ 56 - 0
README.md

@@ -1,2 +1,58 @@
 # 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:
+```js
+// 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";
+  }
+};
+```
+
+```js
+// 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")`)