Diferència entre revisions de la pàgina «Grup 3 - Dockerització del projecte Django»
(Hi ha 16 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 8: | Línia 8: | ||
<syntaxhighlight lang="bash">git clone https://github.com/sarkamist/VRClassRoom</syntaxhighlight> | <syntaxhighlight lang="bash">git clone https://github.com/sarkamist/VRClassRoom</syntaxhighlight> | ||
− | + | === Dockertizació del projecte === | |
− | En el nostre cas farà falta executar un ''migrate'' per preparar la base de dades '''SQLite'''. D'acord a les instruccions dels nostres companys de DAW, haurem d'executar algunes comandes addicionals. Un cop disposem de tots els fitxers en local podem incloure totes les instruccions necessàries segons la següent Dockerfile. | + | En el nostre cas farà falta executar un ''migrate'' per preparar la base de dades '''SQLite'''. D'acord a les [https://github.com/sarkamist/VRClassRoom/blob/Pro/README.md instruccions] dels nostres companys de DAW, haurem d'executar algunes comandes addicionals. Un cop disposem de tots els fitxers en local podem incloure totes les instruccions necessàries segons la següent Dockerfile. |
− | <syntaxhighlight lang="docker"> | + | <syntaxhighlight lang="docker" line> |
+ | # We use an official Python runtime as a parent image | ||
+ | FROM python:3.10-slim | ||
+ | |||
+ | # Update | ||
+ | RUN apt-get update | ||
+ | |||
+ | # Install python3 required libraries | ||
+ | COPY requirements.txt /opt/django/requirements.txt | ||
+ | RUN pip3 install --no-cache-dir -r /opt/django/requirements.txt | ||
+ | |||
+ | # Copy the application code to the image | ||
+ | COPY lms/. /opt/django/site | ||
+ | |||
+ | EXPOSE 80 | ||
+ | |||
+ | # Copy the setup entrypoint | ||
+ | COPY start.sh /opt/django/start.sh | ||
+ | |||
+ | # Execute bash script as entrypoint | ||
+ | RUN chmod +x /opt/django/start.sh | ||
+ | ENTRYPOINT ["/opt/django/start.sh"] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | Aquesta Dockerfile ens copia tots els components necessaris i instal·la les llibreries requerides per després deixar els processos de configuració inicial a una ''script'' amb Bash. El fitxer <code>start.sh</code> quedarà doncs encarregat d'executar les instruccions necessàries abans de llençar el servidor cap al port 80. | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | #!/bin/bash | ||
+ | |||
+ | #Run migrate to create database | ||
+ | python3 /opt/django/site/manage.py migrate | ||
+ | |||
+ | #Run initialization script (provided by DAW developers) | ||
+ | python3 /opt/django/site/manage.py initvroom | ||
+ | |||
+ | #Run the server on port 80 | ||
+ | python3 /opt/django/site/manage.py runserver 0.0.0.0:80 | ||
+ | </syntaxhighlight> | ||
+ | Per provar aquesta Dockerfile en local, haurem de fer un ''build'' i després un ''run''. | ||
+ | <syntaxhighlight lang="bash">docker build -t dockerized-classvrroom .</syntaxhighlight> | ||
+ | <syntaxhighlight lang="bash">docker run -it --rm --name test -p 80:80 dockerized-classvrroom</syntaxhighlight> | ||
+ | Un cop executem les comandes anteriors podrem accedir al ''site'' directament des de <code>localhost</code>. | ||
== Referències == | == Referències == | ||
− | * [] | + | * [https://hub.docker.com/_/python Docker Hub - Python Official Image] |
Revisió de 18:09, 30 març 2022
Tornar a Projecte IETI Cloud - Grup 3.
Tasca
21. Dockertizació del projecte Django de classVRroom.
Informe
Per dockeritzar el projecte Django en local, en primer lloc, hem de descarregar-lo des del nostre fork de Github.
git clone https://github.com/sarkamist/VRClassRoom
Dockertizació del projecte
En el nostre cas farà falta executar un migrate per preparar la base de dades SQLite. D'acord a les instruccions dels nostres companys de DAW, haurem d'executar algunes comandes addicionals. Un cop disposem de tots els fitxers en local podem incloure totes les instruccions necessàries segons la següent Dockerfile.
1 # We use an official Python runtime as a parent image
2 FROM python:3.10-slim
3
4 # Update
5 RUN apt-get update
6
7 # Install python3 required libraries
8 COPY requirements.txt /opt/django/requirements.txt
9 RUN pip3 install --no-cache-dir -r /opt/django/requirements.txt
10
11 # Copy the application code to the image
12 COPY lms/. /opt/django/site
13
14 EXPOSE 80
15
16 # Copy the setup entrypoint
17 COPY start.sh /opt/django/start.sh
18
19 # Execute bash script as entrypoint
20 RUN chmod +x /opt/django/start.sh
21 ENTRYPOINT ["/opt/django/start.sh"]
Aquesta Dockerfile ens copia tots els components necessaris i instal·la les llibreries requerides per després deixar els processos de configuració inicial a una script amb Bash. El fitxer start.sh
quedarà doncs encarregat d'executar les instruccions necessàries abans de llençar el servidor cap al port 80.
#!/bin/bash
#Run migrate to create database
python3 /opt/django/site/manage.py migrate
#Run initialization script (provided by DAW developers)
python3 /opt/django/site/manage.py initvroom
#Run the server on port 80
python3 /opt/django/site/manage.py runserver 0.0.0.0:80
Per provar aquesta Dockerfile en local, haurem de fer un build i després un run.
docker build -t dockerized-classvrroom .
docker run -it --rm --name test -p 80:80 dockerized-classvrroom
Un cop executem les comandes anteriors podrem accedir al site directament des de localhost
.