|
|
(No se muestran 3 ediciones intermedias de 2 usuarios) |
Línea 1: |
Línea 1: |
− | Podemos modificar una imagen existente y guardarla con un nombre diferente:
| |
| | | |
− | <syntaxhighlight lang="sh">
| |
− | # docker run -it ubuntu bash
| |
− | root@d66f7a3268e6:/#
| |
− | </syntaxhighlight>
| |
− |
| |
− | Fijaros en que el prompt del interprete de ordenes ha cambiado e indica el numero que identifica de manera unica al contenedor que hemos lanzado. Este numero cambia para cada nueva instancia que lanzamos.
| |
− |
| |
− | <syntaxhighlight lang="sh">
| |
− | root@d66f7a3268e6:/# apt-get update
| |
− | root@d66f7a3268e6:/# apt-get install apache2
| |
− | apt-get install apache2
| |
− | Reading package lists... Done
| |
− | Building dependency tree
| |
− | Reading state information... Done
| |
− | The following additional packages will be installed:
| |
− | apache2-bin apache2-data apache2-utils ...
| |
− | The following NEW packages will be installed:
| |
− | apache2 apache2-bin apache2-data apache2-utils ...
| |
− | 0 upgraded, 57 newly installed, 0 to remove and 4 not upgraded.
| |
− | Need to get 22.6 MB/22.6 MB of archives.
| |
− | After this operation, 102 MB of additional disk space will be used.
| |
− | Do you want to continue? [Y/n]
| |
− | ...
| |
− | root@d66f7a3268e6:/#
| |
− | </syntaxhighlight>
| |
− |
| |
− | Escribo 'Y' y pulso enter para comenzar la instalacion del servidor web apache2.
| |
− |
| |
− | <syntaxhighlight lang="sh">
| |
− | root@d66f7a3268e6:/# exit
| |
− | </syntaxhighlight>
| |
− |
| |
− | <syntaxhighlight lang="sh">
| |
− | # docker commit -m "Imagen de ubuntu con apache2" -a "profe" d66f7a3268e6 ubuntu/apache2
| |
− | sha256:b68ef77405104a6ea2de6fde986a519a2fc9710b26d9ae8ec2553f5050c51fd3
| |
− | </syntaxhighlight>
| |
− |
| |
− | <syntaxhighlight lang="sh">
| |
− | # docker images
| |
− | REPOSITORY TAG IMAGE ID CREATED SIZE
| |
− | ubuntu/apache2 latest b68ef7740510 36 seconds ago 260MB
| |
− | </syntaxhighlight>
| |
− |
| |
− | <syntaxhighlight lang="sh">
| |
− | # docker run -it -p 8888:80 ubuntu/apache2
| |
− | # service apache2 start
| |
− | * Starting Apache httpd web server apache2 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
| |
− | *
| |
− | </syntaxhighlight>
| |
− |
| |
− | Y ahora si abro un navegador web al localhost al puerto 8888, me aparece la pagina que indica que apache esta funcionando correctamente.
| |
− |
| |
− | = Creando una imagen para una app Flask en python =
| |
− |
| |
− | *Todo el código fuente está disponible en : https://github.com/EGCETSII/1920-Practica-1*
| |
− |
| |
− | Comenzamos creando nuestra app.
| |
− | File holamundo.py
| |
− |
| |
− | <syntaxhighlight lang="python">
| |
− | from flask import Flask
| |
− | app = Flask(__name__)
| |
− | @app.route('/')
| |
− | def hello_world():
| |
− | return 'Hello World'
| |
− | @app.route('/hello/<name>')
| |
− | def hello_name(name):
| |
− | return 'Hello %s!' % name
| |
− | if __name__ == '__main__':
| |
− | app.run()
| |
− |
| |
− | </syntaxhighlight>
| |
− |
| |
− |
| |
− | Definimos las dependencias
| |
− | File requirements.txt
| |
− |
| |
− | <syntaxhighlight lang="python">
| |
− | Flask
| |
− | </syntaxhighlight>
| |
− |
| |
− | Podemos usar la imagen de python3 existente en los repositorios de docker, y modificar anadiendo en la carpeta apps la aplicacion que hemos desarrollado
| |
− |
| |
− | Para ello podemos crear un fichero Dockerfile que nos automatiza la creacion de una imagen modificada:
| |
− |
| |
− | <syntaxhighlight lang="sh">
| |
− | # Base image
| |
− | FROM python:3
| |
− | #copy the requirements txt file with all our dependencies
| |
− | COPY requirements.txt ./
| |
− | #install the dependencies
| |
− | RUN pip install --no-cache-dir -r requirements.txt
| |
− | #copy the app in the image
| |
− | COPY holamundo.py ./
| |
− | #define a default command to execute
| |
− | CMD [ "python", "./holamundo.py" ]
| |
− |
| |
− | </syntaxhighlight>
| |
− |
| |
− | Este fichero indica que docker tiene que descargar la imagen python en su tercera versión y tiene que añadir el fichero requirements a la carpeta de usuario de la imagen.
| |
− |
| |
− | Docker nos ofrece un lenguaje de scripting para automatizar la creacion de imagenes.
| |
− |
| |
− | <syntaxhighlight lang="sh">
| |
− | # docker build -t holamundo-flask .
| |
− | </syntaxhighlight>
| |
− |
| |
− | Va a crear la imagen, tras esto podemos lanzar:
| |
− |
| |
− | <syntaxhighlight lang="sh">
| |
− | # docker run -it -p 5000:5000 holamundo-flask
| |
− | </syntaxhighlight>
| |
− |
| |
− | Tras esto, desde un navegador, abrimos la URI: http://localhost:5000/hello/"yourname"
| |