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 | ||
ceti_mp03 [2022/07/08 12:07] antonio_duenas [Pàgines en aquesta wiki] |
ceti_mp03 [2022/10/14 08:14] (actual) enrique_mieza_sanchez |
||
---|---|---|---|
Línia 5: | Línia 5: | ||
- | ====== Dockeritzant una aplicació Java ====== | ||
- | En aquest article " | ||
- | Cal haver seguit el [[Django|tutorial inicial Django]] o, com a mínim disposar d'un projecte Django amb el complement django-environ per a les variables d' | ||
- | {{ java-docker.png }} | + | ===== Pàgines en aquesta wiki ===== |
- | {{tag> # | + | {{topic> #CiberMp03 #CetiMp03 }} |
- | Referències: | ||
- | * [[Django]] : primer de tot cal seguir aquest article per disposar d'una app Django apta per a ser dockeritzada, | ||
- | * [[Docker]] | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | |||
- | \\ | ||
- | |||
- | ===== Dockeritzant amb el servidor de desenvolupament ===== | ||
- | |||
- | El Dockerfile permet crear la imatge del contenidor. | ||
- | |||
- | <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 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 8000 | ||
- | |||
- | # runs the development server | ||
- | ENTRYPOINT [" | ||
- | CMD [" | ||
- | </ | ||
- | |||
- | Fixeu-vos en què la darrera instrucció equival a '' | ||
- | |||
- | El docker-compose ens facilita la posada en producció juntament amb la base de dades: | ||
- | |||
- | <file yaml docker-compose.yml> | ||
- | version: ' | ||
- | |||
- | services: | ||
- | |||
- | django_app: | ||
- | build: . | ||
- | restart: always | ||
- | ports: | ||
- | - 8000:8000 | ||
- | environment: | ||
- | - DATABASE_URL=sqlite:/// | ||
- | - DEBUG=False | ||
- | - SECRET_KEY=asecretkeyblabla | ||
- | volumes: | ||
- | - ./ | ||
- | |||
- | </ | ||
- | |||
- | Per posar-ho en marxa primer cal crear un arxiu on persistir la BD local: | ||
- | $ touch db.sqlite3 | ||
- | $ docker-compose up -d --build | ||
- | |||
- | \\ | ||
- | |||
- | ===== Exercicis ===== | ||
- | <WRAP todo> | ||
- | Connecta' | ||
- | - Fes un //migrate// per tal de crear les taules de la BD. | ||
- | - Crea un superusuari i loga't al panell d' | ||
- | </ | ||
- | |||
- | |||
- | <WRAP todo> | ||
- | Modifica el '' | ||
- | |||
- | Assegura' | ||
- | |||
- | Fes el //migrate// i crea el superusuari tal i com hem fet abans. | ||
- | </ | ||
- | |||
- | \\ | ||
- | |||
- | ===== Utilitzant uWSGI + Ngnix ===== | ||
- | El " | ||
- | |||
- | {{diagrama_django_produccio.png? | ||
- | |||
- | Recordem que un dels principis bàsics de Docker és el de "un servei per contenidor" | ||
- | |||
- | En canvi, [[https:// | ||
- | |||
- | |||
- | ==== Dockeritzant uWSGI + Nginx en un sol contenidor ==== | ||
- | |||
- | Farem una mescla dels dos tutorials per aconseguir el nostre Django en un sol contenidor. | ||
- | |||
- | <file bash supervisord.conf> | ||
- | [supervisord] | ||
- | nodaemon=true | ||
- | |||
- | [program: | ||
- | command=/ | ||
- | stdout_logfile=/ | ||
- | stdout_logfile_maxbytes=0 | ||
- | stderr_logfile=/ | ||
- | stderr_logfile_maxbytes=0 | ||
- | |||
- | [program: | ||
- | command=/ | ||
- | stdout_logfile=/ | ||
- | stdout_logfile_maxbytes=0 | ||
- | stderr_logfile=/ | ||
- | stderr_logfile_maxbytes=0 | ||
- | </ | ||
- | |||
- | <file bash uwsgi.ini> | ||
- | [uwsgi] | ||
- | module = mysite.wsgi | ||
- | callable = application | ||
- | uid = nginx | ||
- | gid = nginx | ||
- | socket = / | ||
- | chown-socket = www-data: | ||
- | chmod-socket = 664 | ||
- | cheaper = 1 | ||
- | processes = %(%k + 1) | ||
- | # clear environment on exit | ||
- | vacuum=true | ||
- | </ | ||
- | |||
- | <file txt uwsgi_params> | ||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | |||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | |||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | uwsgi_param | ||
- | </ | ||
- | |||
- | <file bash django-site.conf> | ||
- | |||
- | server { | ||
- | location / { | ||
- | try_files $uri @yourapplication; | ||
- | } | ||
- | location @yourapplication { | ||
- | include uwsgi_params; | ||
- | uwsgi_pass unix:/// | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | <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> | ||
- | Canvia la configuració per a utilitzar el servidor d' | ||
- | |||
- | 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? Implementa-la. | ||
- | </ | ||