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.