Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia Ultima revisió Ambdós costats nova versio | ||
django_docker [2022/01/14 15:55] enrique_mieza_sanchez [Utilitzant uWSGI + Ngnix] |
django_docker [2024/02/20 14:58] enric_mieza_sanchez [Dockeritzant amb el servidor de desenvolupament] |
||
---|---|---|---|
Línia 14: | Línia 14: | ||
\\ | \\ | ||
+ | |||
===== Dockeritzant amb el servidor de desenvolupament ===== | ===== Dockeritzant amb el servidor de desenvolupament ===== | ||
Línia 21: | 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 71: | 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:// | ||
+ | mysqlclient==2.1.1 | ||
+ | |||
+ | </ | ||
\\ | \\ | ||
Línia 88: | Línia 97: | ||
Fes el //migrate// i crea el superusuari tal i com hem fet abans. | Fes el //migrate// i crea el superusuari tal i com hem fet abans. | ||
+ | |||
+ | <WRAP tip> | ||
+ | Alguns tips: | ||
+ | * A l' | ||
+ | - db</ | ||
+ | * Afegiu un arxiu '' | ||
+ | db/ | ||
+ | </ | ||
+ | </ | ||
</ | </ | ||
Línia 93: | Línia 111: | ||
===== Utilitzant uWSGI + Ngnix ===== | ===== Utilitzant uWSGI + Ngnix ===== | ||
- | El " | + | El " |
- | Recordem que un dels principis bàsics de Docker és el de "un procés per contenidor" | + | {{:django: |
- | En canvi, [[https:// | + | Recordem que un dels principis bàsics de Docker és el de "un servei per contenidor" |
+ | |||
+ | En canvi, [[https:// | ||
- | {{diagrama_django_produccio.png? | ||
==== Dockeritzant uWSGI + Nginx en un sol contenidor ==== | ==== Dockeritzant uWSGI + Nginx en un sol contenidor ==== | ||
Línia 105: | Línia 124: | ||
Farem una mescla dels dos tutorials per aconseguir el nostre Django en un sol contenidor. | Farem una mescla dels dos tutorials per aconseguir el nostre Django en un sol contenidor. | ||
- | <file bash uwsgi.ini> | + | <file bash deploy/ |
+ | [supervisord] | ||
+ | # per a dockeritzar necessitem supervisord en foreground | ||
+ | nodaemon=true | ||
+ | |||
+ | [program: | ||
+ | command=/ | ||
+ | |||
+ | [program: | ||
+ | command=/ | ||
+ | </ | ||
+ | |||
+ | <file bash deploy/uwsgi.ini> | ||
[uwsgi] | [uwsgi] | ||
- | socket=app.sockchmod-socket=664 | + | # TODO: ull, revisa si el teu projecte es diu ' |
- | # mark the initial process as a master | + | module |
- | master=true | + | callable |
- | # maximum number of worker processes | + | uid = nginx |
- | processes | + | gid = nginx |
- | threads | + | socket = / |
- | # Django' | + | chown-socket |
- | module=docker_django_tutorial.wsgi: | + | chmod-socket |
+ | cheaper = 1 | ||
+ | processes | ||
# clear environment on exit | # clear environment on exit | ||
vacuum=true | vacuum=true | ||
</ | </ | ||
- | <file txt uwsgi_params> | + | <file txt deploy/uwsgi_params> |
uwsgi_param | uwsgi_param | ||
uwsgi_param | uwsgi_param | ||
Línia 139: | Línia 171: | ||
</ | </ | ||
- | <file bash my_nginx.conf> | + | <file bash deploy/ |
- | # the upstream component nginx needs to connect to | + | |
- | upstream uwsgi { | + | |
- | # server api:8000; | + | |
- | # use TCP | + | |
- | server unix:/ | + | |
- | } | + | |
- | # configuration of the server | ||
server { | server { | ||
- | # the port your site will be served on | ||
- | listen | ||
- | # the domain name it will serve for | ||
- | server_name example.com; | ||
- | charset | ||
- | # max upload size | ||
- | client_max_body_size 75M; | ||
- | location /static { | ||
- | # your Django project' | ||
- | alias / | ||
- | } | ||
- | # Finally, send all non-media requests to the Django server. | ||
location / { | location / { | ||
- | | + | |
- | include | + | |
} | } | ||
+ | location @yourapplication { | ||
+ | include uwsgi_params; | ||
+ | uwsgi_pass unix:/// | ||
+ | } | ||
+ | | ||
+ | # TODO: aquí cal afegir alguna cosa perquè funcionin el arxius estàtics | ||
} | } | ||
</ | </ | ||
+ | <file dockerfile Dockerfile> | ||
+ | # We Use an official Python runtime as a parent image | ||
+ | FROM python: | ||
+ | # install db libs | ||
+ | RUN apt-get update | ||
+ | RUN apt-get install -y default-mysql-client libmariadb-dev | ||
+ | RUN apt-get install -y libmariadb-dev-compat gcc gdal-bin libjpeg-dev | ||
+ | |||
+ | # install nginx and supervisor | ||
+ | RUN apt-get install -y --no-install-recommends \ | ||
+ | nginx supervisor | ||
+ | RUN useradd --no-create-home nginx | ||
+ | # install uwsgi | ||
+ | RUN pip3 install uwsgi | ||
+ | |||
+ | # adjustments | ||
+ | RUN rm / | ||
+ | RUN rm -r / | ||
+ | |||
+ | # production conf files | ||
+ | COPY deploy/ | ||
+ | COPY deploy/ | ||
+ | COPY deploy/ | ||
+ | |||
+ | # install app libs | ||
+ | COPY requirements.txt requirements.txt | ||
+ | RUN pip3 install --no-cache-dir -r requirements.txt | ||
+ | |||
+ | # Mounts the application code to the image | ||
+ | COPY . code | ||
+ | |||
+ | # establish workdir | ||
+ | WORKDIR /code | ||
+ | |||
+ | EXPOSE 80 | ||
+ | |||
+ | # runs the development server | ||
+ | CMD ["/ | ||
+ | </ | ||
+ | |||
+ | <WRAP tip> | ||
+ | Perquè funcioni bé i veiem la web al port 8000 cal que **modifiqueu el '' | ||
+ | </ | ||
+ | |||
+ | \\ | ||
<WRAP todo> | <WRAP todo> | ||
- | Canvia la configuració per a utilitzar el servidor d' | + | Canvia la configuració per a utilitzar el servidor d' |
+ | |||
+ | Ull que alguns arxius van a una nova carpeta ''/ | ||
Comprova que **tornem a tenir el problema dels arxius estàtics** accedint al /admin i refrescant fins que vegis que no es veuen els CSS. | Comprova que **tornem a tenir el problema dels arxius estàtics** accedint al /admin i refrescant fins que vegis que no es veuen els CSS. | ||
- | Com creus que seria la millor manera de solventar el problema dels arxius estàtics? | + | Com creus que seria la millor manera de solventar el problema dels arxius estàtics? |
</ | </ | ||