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 | |||
playground:prova2 [2023/06/28 13:12] enric_mieza_sanchez suprimit |
— (actual) | ||
---|---|---|---|
Línia 1: | Línia 1: | ||
- | ====== Dockerfile : creant les nostres pròpies imatges ====== | ||
- | |||
- | El '' | ||
- | |||
- | Veurem com crear un contenidor "des de zero" o //from scratch//, afegint només els arxius del SO imprescindibles per a la funció que volem resoldre. | ||
- | |||
- | També veurem com extendre contenidors ja fets (habitualment partint d'una distribució standard com Debian, Ubuntu, Centos o Alpine) i afegir-los el servei o funció que necessitem. | ||
- | |||
- | Referències: | ||
- | * [[Docker]]: article amb les bases a bytes.cat | ||
- | * [[Docker-compose]]: | ||
- | * [[https:// | ||
- | |||
- | Tenim diverses maneres de crear una imatge Docker: | ||
- | - A partir d'un Dockerfile. | ||
- | - Descarregant-la de Docker Hub ('' | ||
- | - Utilitzant [[https:// | ||
- | |||
- | {{tag> #FpInfor #Ciber #CiberMp03 #Ceti #CetiMp03 DevOps docker dockerfile flask wordpress docker_commit docker_compose contenidors containers }} | ||
- | |||
- | \\ | ||
- | |||
- | ===== Primer Dockerfile from scratch ===== | ||
- | |||
- | Una primera versió elemental del '' | ||
- | |||
- | <file Dockerfile Dockerfile> | ||
- | # imatge base. " | ||
- | FROM scratch | ||
- | |||
- | WORKDIR / | ||
- | |||
- | # Afegim arxius al contenidor des de la carpeta local " | ||
- | ADD src / | ||
- | |||
- | # CMD o ENTRYPOINT van al final per posar en marxa un servei en primer plànol | ||
- | CMD ["/ | ||
- | </ | ||
- | |||
- | Els fitxers que posarem a la carpeta '' | ||
- | |||
- | - Localitzem l' | ||
- | / | ||
- | </ | ||
- | - Ara que sabem quin és, consultem els arxius dels què depèn:< | ||
- | linux-vdso.so.1 (0x00007ffd30bad000) | ||
- | libtinfo.so.6 => / | ||
- | libdl.so.2 => / | ||
- | libc.so.6 => / | ||
- | / | ||
- | </ | ||
- | - Aquests arxius, amb el mateix nom exacte i les carpetes idèntiques, | ||
- | |||
- | [[https:// | ||
- | |||
- | Resumim aquí una relació d' | ||
- | |||
- | . | ||
- | ├── Dockerfile | ||
- | └── src | ||
- | ├── bin | ||
- | │ └── bash | ||
- | ├── lib | ||
- | │ └── x86_64-linux-gnu | ||
- | │ | ||
- | │ | ||
- | │ | ||
- | └── lib64 | ||
- | └── ld-linux-x86-64.so.2 | ||
- | |||
- | ==== Construim imatge ==== | ||
- | |||
- | Un cop tenim tots els arxius a la carpeta src amb les seves carpetes adequades, construïm la imatge amb: | ||
- | $ docker build -t <tag> . | ||
- | |||
- | Si poseu un // | ||
- | |||
- | $ docker build -t enric/ | ||
- | |||
- | Podeu veure les vostres imates creades amb: | ||
- | $ docker images | ||
- | |||
- | I la posem en marxa amb: | ||
- | $ docker run -ti enric/ | ||
- | bash-5.0# | ||
- | |||
- | És molt important que en aquest container no podem posar-ho en marxa amb el flag '' | ||
- | |||
- | Podem provar un banal '' | ||
- | bash-5.0# echo " | ||
- | hola | ||
- | bash-5.0# ls | ||
- | bash: ls: command not found | ||
- | |||
- | Però veiem que un simple '' | ||
- | |||
- | NOTA: Comandes que es poden fer amb bash sense instal.lar cap binari: | ||
- | |||
- | [[https:// | ||
- | |||
- | ==== Publicar imatge a Docker Hub ==== | ||
- | <WRAP todo> | ||
- | - Afegeix a '' | ||
- | * '' | ||
- | * '' | ||
- | * una altra comanda de la vostra elecció. | ||
- | - Quan la imatge et funcioni, crea un compte a [[https:// | ||
- | - Penja al Moodle la URL del Docker Hub amb el teu flamant contenidor publicat. | ||
- | </ | ||
- | |||
- | \\ | ||
- | |||
- | ==== Comparant espai ocupat per les imatges ==== | ||
- | |||
- | Descarregueu les imatges de ubuntu, centos, httpd i alpine, i compareu el què ocupen: | ||
- | < | ||
- | ubuntu | ||
- | httpd | ||
- | centos | ||
- | alpine | ||
- | </ | ||
- | |||
- | Com podem veure, la [[https:// | ||
- | |||
- | \\ | ||
- | |||
- | |||
- | ===== Docker commit ===== | ||
- | |||
- | Amb [[https:// | ||
- | |||
- | ==== Millora d'un Wordpress amb docker commit ==== | ||
- | <WRAP todo> | ||
- | Tenim un client que ens demana que li migrem un Wordpress, i el volem posar en un contenidor a la nostra màquina segura. Fem un export i al voler fer l' | ||
- | |||
- | - Posa en marxa un Wordpress (no cal fer la DB, només el WP) | ||
- | - Connecta' | ||
- | - Comprova el valor de les variables carregades, pots anar a ''/ | ||
- | - Visita la web, però canvia la URL a /prova.php i comprova els valors de '' | ||
- | - Ves a la carpeta ''/ | ||
- | memory_limit = 500M | ||
- | upload_max_filesize = 500M | ||
- | post_max_size = 500M | ||
- | max_execution_time = 600 | ||
- | </ | ||
- | - Surt del contenidor i guarda la teva imatge amb un< | ||
- | - Posa en marxa ara un docker-compose (mira la web de Docker Hub, ara sí, amb DB inclosa). Canvia la imatge de wordpress per la nova imatge que hem creat '' | ||
- | - També ho pots comprovar anant a la pàgina '' | ||
- | </ | ||
- | |||
- | |||
- | \\ | ||
- | |||
- | ===== Combinant Dockerfile i Docker-compose ===== | ||
- | |||
- | 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). | ||
- | |||
- | |||
- | ==== Millora d'un Wordpress amb Dockerfile ==== | ||
- | <WRAP todo> | ||
- | - Crea una carpeta de projecte '' | ||
- | - Afegeix l' | ||
- | memory_limit = 500M | ||
- | upload_max_filesize = 500M | ||
- | post_max_size = 500M | ||
- | max_execution_time = 600 | ||
- | </ | ||
- | - Modifica el '' | ||
- | build: .</ | ||
- | - Al '' | ||
- | FROM wordpress | ||
- | COPY uploads.ini / | ||
- | </ | ||
- | - (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. | ||
- | - Carrega la imatge '' | ||
- | </ | ||
- | |||
- | \\ | ||
- | |||
- | ===== Primera webapp amb Flask, Dockerfile i Docker-compose ===== | ||
- | |||
- | Continua a l' | ||
- | |||