bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


django_docker

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
django_docker [2023/02/28 19:45]
enric_mieza_sanchez [Dockeritzant uWSGI + Nginx en un sol contenidor]
django_docker [2024/02/20 14:59] (actual)
enric_mieza_sanchez [Dockeritzant uWSGI + Nginx en un sol contenidor]
Línia 22: Línia 22:
 <file Dockerfile Dockerfile> <file Dockerfile Dockerfile>
 # We Use an official Python runtime as a parent image # We Use an official Python runtime as a parent image
-FROM python:3.8-slim+FROM python:3.11.7-bullseye
  
 # install db libs # install db libs
Línia 72: Línia 72:
   $ touch db.sqlite3   $ touch db.sqlite3
   $ docker-compose up -d --build   $ docker-compose up -d --build
 +
 +<WRAP important>
 +**Troubleshooting**
 +
 +He tingut alguns problemes amb la [[https://pypi.org/project/mysqlclient/|llibreria mysqlclient]]. He aconseguit que funcionés canviant ''requirements.txt'' a una versió anterior (Juny 2023):
 +  mysqlclient==2.1.1
 +
 +</WRAP>
  
 \\ \\
Línia 105: Línia 113:
 El "invento" que hem fet fins ara funciona, però **no és una bona pràctica utilitzar el servidor de desenvolupament de Django** (el ''./manage.py runserver''). Ara configurarem el ''Dockerfile'' per aconseguir que s'utilitzi uWSGI + Nginx , tal i com cal per a un servidor de producció. El "invento" que hem fet fins ara funciona, però **no és una bona pràctica utilitzar el servidor de desenvolupament de Django** (el ''./manage.py runserver''). Ara configurarem el ''Dockerfile'' per aconseguir que s'utilitzi uWSGI + Nginx , tal i com cal per a un servidor de producció.
  
-{{diagrama_django_produccio.png?direct}}+{{:django:diagrama_django_produccio.png?direct}}
  
 Recordem que un dels principis bàsics de Docker és el de "un servei per contenidor". Com que necessitem 2 serveis, seguint aquesta filosofia necessitarem un ''docker-compose.yml'' amb 2 serveis + la BD. [[https://python.plainenglish.io/dockerizing-django-rest-apis-with-uwsgi-and-nginx-cabffc153c78|Aquest tutorial segueix la filosofia "un servei per contenidor"]]. Recordem que un dels principis bàsics de Docker és el de "un servei per contenidor". Com que necessitem 2 serveis, seguint aquesta filosofia necessitarem un ''docker-compose.yml'' amb 2 serveis + la BD. [[https://python.plainenglish.io/dockerizing-django-rest-apis-with-uwsgi-and-nginx-cabffc153c78|Aquest tutorial segueix la filosofia "un servei per contenidor"]].
Línia 118: Línia 126:
 <file bash deploy/supervisord.conf> <file bash deploy/supervisord.conf>
 [supervisord] [supervisord]
 +# per a dockeritzar necessitem supervisord en foreground
 nodaemon=true nodaemon=true
  
 [program:uwsgi] [program:uwsgi]
 command=/usr/local/bin/uwsgi --ini /etc/uwsgi/uwsgi.ini --die-on-term command=/usr/local/bin/uwsgi --ini /etc/uwsgi/uwsgi.ini --die-on-term
-stdout_logfile=/dev/stdout 
-stdout_logfile_maxbytes=0 
-stderr_logfile=/dev/stderr 
-stderr_logfile_maxbytes=0 
  
 [program:nginx] [program:nginx]
-command=/usr/sbin/nginx +command=/usr/sbin/nginx -g 'daemon off;'
-stdout_logfile=/dev/stdout +
-stdout_logfile_maxbytes=0 +
-stderr_logfile=/dev/stderr +
-stderr_logfile_maxbytes=0+
 </file> </file>
  
 <file bash deploy/uwsgi.ini> <file bash deploy/uwsgi.ini>
 [uwsgi] [uwsgi]
 +# TODO: ull, revisa si el teu projecte es diu 'mysite' o una altra cosa
 module = mysite.wsgi module = mysite.wsgi
 callable = application callable = application
Línia 179: Línia 181:
         uwsgi_pass unix:///tmp/uwsgi.sock;         uwsgi_pass unix:///tmp/uwsgi.sock;
     }     }
 +    
 +    # TODO: aquí cal afegir alguna cosa perquè funcionin el arxius estàtics
 } }
 </file> </file>
Línia 184: Línia 188:
 <file dockerfile Dockerfile> <file dockerfile Dockerfile>
 # We Use an official Python runtime as a parent image # We Use an official Python runtime as a parent image
-FROM python:3.8-slim+FROM python:3.11.7-bullseye
  
 # install db libs # install db libs
django_docker.1677613551.txt.gz · Darrera modificació: 2023/02/28 19:45 per enric_mieza_sanchez