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: | |
|
|
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.