======= jmb add ======= Recentemenete (2020) abbiamo cominciato una transizione verso i docker come modalità di deploy delle nostre applicazioni, ed in aggiunta una creazione delle immagini all'interno della mostra CI (Continuous Intergration) fornita da Gitlab/Heptapod. I nuovi progetti hanno già il necessario. Per facilitare il passaggio a docker ho creato il comando ``jmb add`` che aggiunge i file necessari ai progetti sprovvisti di questi file, prelevandoli dal cookiecutter relativo. Segue un esempio d'uso per un ipotetico progetto django + quasar:: cd www2020.project.it cd django jmb add docker il risultato è:: $ hg st A .gitlab-ci.yml A Dockerfile A uwsgi.ini M web/settings/__init__.py dove si vede che sono già stati aggiunti a mercurial i file necessari (spiegati sotto) ed è stato modificato il file ``settings/__init__.py`` per rendere facile la generazione dei link simbolici che usiamo per la configurazione anche all'interno del docker. per la parte quasar in modo analogo:: cd quasar jmb add docker opzioni ======= Per i cms dove si usa weback, occorre usare l'opzione ``-w``:: jmb add docker -w che installa una versione di Dockerfile che esegue ``yarn run build`` Esiste anche un'opzione che viene passata a cookiecutter e permette di selezionare il branch/topic specifico che si vuole utilizzare. In questo momento ad esempio:: jmb add docker -c docker spiegazione file ================ :.gitlab-ci.yml: è il file che configura quale processamento farà gitlab. Il default è di creare una immagine docker :Dockerfile: è la ricetta per la creazione del file docker, potrebbe essere personalizzata in caso di necessità di pacchetti binari particolari :uwsgi.ini: è la configurazione di uwsgi (immagine django) :nginx.conf: la configurazione di nginx (immagine quasar) :settings/__init__.py: la versione installata usa una razionalizzazione fatta recentemente che può richiedere un ritocco manuale: * SETTINGS_PATH => SETTINGS_DIR (teniamo _path per i file) * PROJECT_PATH => PROJECT_DIR * aggiungiamo ``staging.py`` * DSN_SENTRY: viene dichiarato nei file ``staging.py`` e ``dev.py`` e gestito dal ``__init__`` * ENABLE_TOOLBAR: viene dichiarato nei file ``dev.py``, ``staging.py`` e gestito nell'``__init__.py``. * link a settings: viene generata se presenta una variabile ``ENV`` * ``local.py`` viene generato se non presente e viene aggiunta la ``SECRET_KEY`` modifica ======== Per rendere facili le modifiche future dei file sopra elencati, i suddetti file vengno sovrascritti, sta allo sviluppatore capire se le modifice apportate cancellano eventuali personalizzazioni precedentemente introdotte. template ======== I template di questi file sono i relativi cookiecutter. Al momento quello per quasar non è pronto quindi uso il `repo specifico`_ requirements.txt ================ Ricordo, come detto già in passato, che per creare un docker è necessario che sia correttamente aggiornato il ``requirements.txt``. Se state usando buildout, potete semplicemente usare il comando:: jmb-test-setup -Y > requirements.txt (Assicuratevi di avere l'ultima versione del **pacchetto** ``jmb`` - ``apt-get update && apt-get install jmb``). Inoltre vi chiedo di prestare attenzione ad utilizzare le ultime versioni dei pacchetti Python compatibili con il vostro progetto. Per questo potete fare un paio di cose a seconda della modalità (buildout/virtualenv). buildout --------- Fissate le versioni **necessarie** (ad es, Django) sia in ``setup.py`` che in ``buildout.cfg``, poi procedete così:: echo '[versions]' > versions.cfg rm -Rf .installed.cfg rm -Rf .develop-eggs bin/buildout jmb-test-setup -Y > requirements.txt pip --- Fate il pinning delle versioni in ``setup.py`` e poi eseguite:: pip install -U . pip freeze > requirements.txt si, questa volta mettete "."! Controllate poi che non ci siano stranezze nel file ``requirements.txt``, come ad esempio ``setupTest`` o path relativi. .. _`repo specifico`: https://hg.thux.dev/tools/cookiecutter/vuejs-docker