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 | ||
|
dockerfile [2022/05/11 16:27] enrique_mieza_sanchez [Millora d'un Wordpress amb Dockerfile] |
dockerfile [2023/11/06 19:14] (actual) enric_mieza_sanchez [Millora d'un Wordpress amb Dockerfile] |
||
|---|---|---|---|
| Línia 1: | Línia 1: | ||
| ====== Dockerfile : creant les nostres pròpies imatges ====== | ====== Dockerfile : creant les nostres pròpies imatges ====== | ||
| + | |||
| El '' | El '' | ||
| Línia 43: | Línia 44: | ||
| / | / | ||
| </ | </ | ||
| - | - Ara que sabem quin és, consultem els arxius dels què depèn:< | + | - Ara que sabem quin és, consultem els arxius dels què depèn |
| linux-vdso.so.1 (0x00007ffd30bad000) | linux-vdso.so.1 (0x00007ffd30bad000) | ||
| libtinfo.so.6 => / | libtinfo.so.6 => / | ||
| Línia 94: | Línia 95: | ||
| Però veiem que un simple '' | Però veiem que un simple '' | ||
| + | |||
| + | NOTA: Comandes que es poden fer amb bash sense instal.lar cap binari: | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | === Script d' | ||
| + | Per personalitzar una mica més la nostra imatge i donar instruccions a l' | ||
| + | |||
| + | <file bash / | ||
| + | echo " | ||
| + | echo "Ara només disposeu de les comandes builtin de bash." | ||
| + | echo "Mes comandes ...coming soon..." | ||
| + | </ | ||
| + | |||
| + | Comprova que ens apareix el missatge si reconstruim la imatge i la posem en marxa: | ||
| + | < | ||
| + | $ docker build -t enric/ | ||
| + | $ docker run -ti enric/ | ||
| + | Benvingut al docker de l' | ||
| + | Ara només disposeu de les comandes builtin de bash. | ||
| + | Mes comandes ...coming soon... | ||
| + | bash-5.1# | ||
| + | </ | ||
| ==== Publicar imatge a Docker Hub ==== | ==== Publicar imatge a Docker Hub ==== | ||
| <WRAP todo> | <WRAP todo> | ||
| - | - Afegeix | + | - Afegeix |
| - | - Quan la imatge et funcioni, crea un compte a [[https:// | + | * '' |
| - | - Penja al Moodle | + | * '' |
| + | * una altra comanda de la vostra elecció. | ||
| + | - Posa un missatge personalitzat a ''/ | ||
| + | | ||
| + | - Crea un compte a [[https:// | ||
| + | * Poso l' | ||
| + | - Logueja' | ||
| + | | ||
| + | * ULL perquè el nom d' | ||
| + | - Penja al Moodle el nom complet de la imatge '' | ||
| </ | </ | ||
| Línia 148: | Línia 181: | ||
| Ara farem el mateix que hem fet a l' | Ara farem el mateix que hem fet a l' | ||
| + | |||
| + | Amb això crearem una imatge de Wordpress personalitzada amb les modificacions que ens interessa (pel cas, que ens permeti pujar arxius grans). | ||
| Línia 153: | Línia 188: | ||
| <WRAP todo> | <WRAP todo> | ||
| - Crea una carpeta de projecte '' | - Crea una carpeta de projecte '' | ||
| - | - Afegeix l' | + | - Afegeix l' |
| memory_limit = 500M | memory_limit = 500M | ||
| upload_max_filesize = 500M | upload_max_filesize = 500M | ||
| post_max_size = 500M | post_max_size = 500M | ||
| max_execution_time = 600 | max_execution_time = 600 | ||
| - | </code> | + | </file> |
| - | - Modifica el '' | + | - Modifica el '' |
| - | - Al '' | + | build: .</ |
| + | - Al '' | ||
| FROM wordpress | FROM wordpress | ||
| COPY uploads.ini / | COPY uploads.ini / | ||
| - | </code> | + | </file> |
| - (No li cal CMD o ENTRYPOINT perquè ho hereda del pare // | - (No li cal CMD o ENTRYPOINT perquè ho hereda del pare // | ||
| - Posa-ho en marxa i, quan et funcioni, mostra-ho al professor amb les adequades explicacions i comprovacions. | - Posa-ho en marxa i, quan et funcioni, mostra-ho al professor amb les adequades explicacions i comprovacions. | ||
| - | - Carrega la imatge '' | + | - Carrega la imatge '' |
| + | * Etiqueta la nova imatge amb [[https:// | ||
| + | * Carrega la imatge | ||
| </ | </ | ||
| Línia 173: | Línia 211: | ||
| ===== Primera webapp amb Flask, Dockerfile i Docker-compose ===== | ===== Primera webapp amb Flask, Dockerfile i Docker-compose ===== | ||
| - | Segons la [[https:// | + | Continua a l' |
| - | + | ||
| - | <file yaml docker-compose.yml> | + | |
| - | version: " | + | |
| - | services: | + | |
| - | web: | + | |
| - | build: . | + | |
| - | ports: | + | |
| - | - " | + | |
| - | redis: | + | |
| - | image: " | + | |
| - | </ | + | |
| - | + | ||
| - | <file Dockerfile Dockerfile> | + | |
| - | # syntax=docker/ | + | |
| - | FROM python: | + | |
| - | WORKDIR /code | + | |
| - | ENV FLASK_APP=app.py | + | |
| - | ENV FLASK_RUN_HOST=0.0.0.0 | + | |
| - | RUN apk add --no-cache gcc musl-dev linux-headers | + | |
| - | COPY requirements.txt requirements.txt | + | |
| - | RUN pip install -r requirements.txt | + | |
| - | EXPOSE 5000 | + | |
| - | COPY . . | + | |
| - | CMD [" | + | |
| - | </ | + | |
| - | + | ||
| - | <file python app.py> | + | |
| - | import time | + | |
| - | + | ||
| - | import redis | + | |
| - | from flask import Flask | + | |
| - | + | ||
| - | app = Flask(__name__) | + | |
| - | cache = redis.Redis(host=' | + | |
| - | + | ||
| - | def get_hit_count(): | + | |
| - | retries = 5 | + | |
| - | while True: | + | |
| - | try: | + | |
| - | return cache.incr(' | + | |
| - | except redis.exceptions.ConnectionError as exc: | + | |
| - | if retries == 0: | + | |
| - | raise exc | + | |
| - | retries -= 1 | + | |
| - | time.sleep(0.5) | + | |
| - | + | ||
| - | @app.route('/' | + | |
| - | def hello(): | + | |
| - | count = get_hit_count() | + | |
| - | return 'Hello World! I have been seen {} times.\n' | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | <file text requirements.txt> | + | |
| - | flask | + | |
| - | redis | + | |
| - | </ | + | |
| - | + | ||
| - | I podríem posar en marxa el nou projecte amb: | + | |
| - | $ docker-compose up -d --build | + | |
| - | + | ||
| - | I veure la web amb el browser a: | + | |
| - | http://< | + | |
| - | + | ||
| - | Per saber més pots llegir: | + | |
| - | * Projectes de [[Python Web]]. | + | |
| - | * Entorns d' | + | |
| - | + | ||
| - | + | ||
| - | ==== Exercici Dockerfile ==== | + | |
| - | <WRAP todo> | + | |
| - | Si poses en marxa l' | + | |
| - | + | ||
| - | Modifica el '' | + | |
| - | </ | + | |