No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Mejorando mi Dockefile

11/19
Recursos

Aportes 31

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

El profesor explica todo muy detallado, no da nada por sentado, muy buen curso para iniciarse en docker.
Que buena la energía que transmite este profesor al enseñar, seria genial tener mas cursos con el.
Despues de 30 min, entendí que debía instalar flask primero, para poder correr la primera parte del ejemplo, debes tener instalado: * python * flask * Debes crear un entorno virtual con este comando: python **-m venv venv** * Luego entrar en el entorno virtual: **/venv/bin/activate** (si utilizas Mac o Linux) o ***venv\Scripts\activate*** (si utilizas Windows). * Luego instalas flask con: **pip install Flask** y recien ahí es que puedes correr el "python -m flask run" Todo esto asumiendo que diera un error como este "python.exe: No module named flask". ahora seguiré viendo la clase . (tenia como 3 semanas de abandono del curso porque me había quedado pegado ahí XD)
**Explicación de instrucciones especificadas en el archivo Dockerfile:** * WORKDIR = ubicacion donde se creara la aplicacion * COPY = copiar archivo local al entorno docker * RUN = ejecutar un comando dentro del contenedor * COPY . . = copiamos los fuentes dentro del WORKDIR especificado * CMD = ejecutar comando sh
¡Hola! Me ha encantado el curso. De verdad que explicas muy bien y aprecio muchísimo que hayas explicado los fundamentos tanto con la CLI como con Docker Desktop **PD:** Soy usuario y fan de linux también :D
No se hizo deploy del api con docker
Dejaré por aquí algunos comando útiles para el Dockerfile: `## Dockerfile` `- Especifica la imagen base desde la cual se construira la imagen:` `FROM image:tag` `- Establece el directorio de trabajo dentro del contenedor. Las instrucciones siguientes se ejecutarán en este directorio:` `WORKDIR /path/to/workdir` `- Copia archivos o directorios desde el sistema de archivos local al sistema de archivos del contenedor:` `COPY <local> <remote>` `- Ejecuta comandos durante la construcción de la imagen. Puedes usarlo para instalar paquetes, configurar el entorno.... :` `RUN command` `example: RUN npm install` `- Proporciona el comando predeterminado a ejecutar cuando el contenedor se inicia:` `CMD ["executable", "param1", "param2"]` `example: CMD ["npm", "run", "dev"]` `- Informa a Docker que la aplicación dentro del contenedor escuchará en el puerto especificado en tiempo de ejecución:` `EXPOSE port` `- Establece variables de entorno dentro del contenedor:` `ENV key=value` `- Crea un punto de montaje para almacenar datos persistentes fuera del contenedor:` `VOLUME ["/data"]`
Es la primera vez que utilizo flask pero ya tenía instalado Python, tengo WSL (Windows Subsystem for Linux) y VSC. Para poder correr la API (1'35'' del video), utilicé los siguientes comandos en la terminal de WSL: ```js ## dirigirte al directorio correspondiente para instalar flask cd clase_11 ## para instalar python apt install python3.10-venv ## para crear el entorno python3 -m venv .venv ## para instalar flask pip install Flask ## para correr flask python3 -m flask run ```
No se olviden de previamente instalar Flask, lo pueden hacer en su terminal de VsCode con pip install Flask
Cual es la diferencia entre RUN y CMD? No logro dsitinguirla
Que gran profesor, había visto otros cursos pero jamás uno como este, muy bien detallado.
Si yo tuviese un framework, cuyo lenguaje principal es NodeJs, pero contiene scripts en Python, qué imagen principal debo seleccionar? es posible seleccionar más de una imagen??
Para crear la imagen y después hacer el build utilicé los siguientes comandos ```js docker build -t api_python:latest ./ docker run -it --rm -d -p 8085:5000 --name api api_python ``` Tuve un problema con el puerto que comunica el contenedor a la aplicación (el segundo puerto), a diferencia de la página web, que nginx utiliza el puerto 80, flask utiliza por defecto el puerto 5000, por lo que si se quiere utilizar los puertos 8085:80 flask arrojara un error, ya que con el puerto 8085 el local se comunica al contenedor (Funciona siempre y cuando no estes ocupando ya ese puerto) y despues el contenedor intenta comunicarse al puerto 80 lo cual no tendrá nada ya que Flask está en el 5000.
No es por nada, pero que curso tan genial y el profesor tiene muy buena vibra y explica muy bien. Me preguntaba cuando podría hacer esto con mi API en Django Rest Framework y ahora lo pude hacer sin ningún problema.
El curso es muy bueno, el profesor tiene el don de explicar, si tienes otro curso mas avanzado de docker, escribe cual es, para que podamos seguirlo.
Podemos crear de manera automática el archivo requirements.txt, utilizando el siguiente comando: pipreqs /ruta/a/tu/proyecto --force
En un Dockerfile, `RUN` se utiliza para ejecutar comandos en la imagen durante la construcción, como instalar paquetes o configurar el entorno. Cada instrucción `RUN` crea una nueva capa en la imagen. Por otro lado, `CMD` define el comando que se ejecutará cuando se inicie un contenedor a partir de la imagen. `CMD` permite especificar el programa y sus argumentos predeterminados, pero se puede sobrescribir al iniciar el contenedor. Ambas instrucciones son esenciales, pero tienen roles diferentes en el ciclo de vida de un contenedor.
Hola, para obtener el json desde el contenedor, yo hice algunos ajustes a los puertos para que flask me dejara: ![](https://static.platzi.com/media/user_upload/Screenshot_1-d8dd6d1f-d4e8-4b0e-bf17-2e9467919b56.jpg) Asegurate de señalar el puerto en tu Dockerfile: `CMD ["python", "-m", "flask", "run", "--host=0.0.0.0", "--port=8080"]`. Esto porque, flask funciona por defecto en el puerto 5000. Y ya para terminar, en tu archivo app.py agrega esto al final: ```python if __name__ == "__main__": app.run(host="0.0.0.0", port=8080) `````` De este modo, ya te va a correr en el puerto 8080 sin ningún problema :D
muy buenos aportes
![](https://static.platzi.com/media/user_upload/image-af6045d1-51de-4bf2-b89b-000b0c0dcd0a.jpg)Llegue a pblicar con el contenedor. Alguna dificultad fue que al crear el archivo de requerimientos lo nombre .txt al fina pero el archo por si solo ya es un txt, solo lo cambie y segui los pasos de los comentarios de algunos compañeros y funciono. Saludos.
Usar una imagen base de Python en el `Dockerfile` es necesario porque proporciona el **entorno de ejecución** que tu aplicación necesita para ejecutarse.
**Explicación de instrucciones especificadas en el archivo Dockerfile:** FROM Python:3.11.10-alpine3.19 WORKDIR /app COPY requirements.txt requirements.txt RUN pip install -r requirements.txt COPY . . CMD \[ "python","-m","flask","run","--host=0.0.0.0" ] Este Dockerfile está configurado para crear una imagen Docker que ejecutará una aplicación en **Flask** (un framework de Python). Aquí te explico paso a paso: 1. `FROM Python:3.11.10-alpine3.19`Esto establece la imagen base, que es **Python 3.11.10** en una versión ligera de **Alpine Linux 3.19**. Es una distribución mínima que ayuda a reducir el tamaño de la imagen. 2. `WORKDIR /app`Define el directorio de trabajo dentro del contenedor como `/app`. Esto significa que todas las operaciones subsecuentes (como copiar archivos o ejecutar comandos) se ejecutarán dentro de este directorio. 3. `COPY requirements.txt requirements.txt`Copia el archivo `requirements.txt` desde tu máquina local al directorio de trabajo `/app` dentro del contenedor. Este archivo contiene las dependencias de Python que necesita tu aplicación. 4. `RUN pip install -r requirements.txt`Ejecuta el comando `pip install` para instalar todas las dependencias listadas en el archivo `requirements.txt`. Esto asegura que todas las bibliotecas necesarias para tu aplicación estén disponibles dentro del contenedor. 5. `COPY . .`Copia todos los archivos y carpetas del directorio actual (donde está el Dockerfile) al directorio de trabajo `/app` dentro del contenedor. Esto incluye el código fuente de tu aplicación Flask. 6. `CMD [ "python","-m","flask","run","--host=0.0.0.0" ]`Este es el comando que se ejecutará cuando el contenedor inicie. Le indica a Python que ejecute Flask usando el módulo `-m flask` y que lo haga con la opción `run` (para iniciar el servidor de desarrollo de Flask).El argumento `--host=0.0.0.0` permite que la aplicación esté accesible desde cualquier interfaz de red, no solo `localhost`, lo que es importante cuando se ejecuta en un contenedor. * `RUN`: Se usa para instalar software y configurar la imagen durante su construcción. * `CMD`: Se usa para definir el comando por defecto que se ejecutará cuando el contenedor arranque, pero puede ser sobreescrito. con el comando `COPY . .`, todas las carpetas y archivos presentes en el **directorio actual** donde se ejecuta el Dockerfile (es decir, el contexto de construcción) serán copiadas al **directorio de trabajo** especificado en el contenedor. ### Explicación detallada: * **Primer punto (**`.`**)**: Se refiere al **directorio actual** en tu máquina (el contexto de construcción) desde donde estás ejecutando el comando `docker build`. Incluye todos los archivos y carpetas en ese directorio, a menos que estén excluidos por un archivo `.dockerignore`. * **Segundo punto (**`.`**)**: Se refiere al **directorio de trabajo** dentro del contenedor, que en tu caso es el que has definido con `WORKDIR /app`. Por lo tanto, si tienes varias carpetas y archivos en el directorio donde ejecutas el Dockerfile, todas esas carpetas y archivos se copiarán al directorio `/app` dentro del contenedor. ### Excepción: Si tienes un archivo `.dockerignore` en el mismo directorio donde está el Dockerfile, puedes especificar qué archivos o carpetas **no** quieres que se copien al contenedor, de manera similar a cómo funciona un archivo `.gitignore`. Por ejemplo, un archivo `.dockerignore` podría verse así: bash Copy code node\_modules \*.log Esto evitaría que la carpeta `node_modules` y los archivos `.log` sean copiados al contenedor.
La fuente es muy chica!
I wanted to do this excercise with react so here you have the instructions: `###REACTFROM ` `node:18-alpineWORKDIR /react-docker-example/` `###Where your code resides` `COPY public /react-docker-example/publicCOPY src /react-docker-example/srcCOPY package.json /react-docker-example/` `RUN npm installCOPY . .` `##There can only be one ` `CMD instruction in the Dockerfile.CMD [ "npm", "start"]` Thank you teacher for the amazing course.
I wanted to do this excercise with react so here you have the instructions: `###REACTFROM node:18-alpineWORKDIR /react-docker-example/` `###Where your code residesCOPY public /react-docker-example/publicCOPY src /react-docker-example/srcCOPY package.json /react-docker-example/` `RUN npm installCOPY . .##There can only be one CMD instruction in the Dockerfile.CMD [ "npm", "start"]` Thank you teacher for the amazing course.
Como hace para que autocomplete o te indique mas o menos que colocar en el visualcode? que ante de colocar veo al mister le aparece sugerencia de autocompletado
Asi configuré la subida de la API de Flask a un contenedor Docker de la siguiente manera: * Primero, le indiqué a Flask cuál archivo contiene la aplicación con ENV FLASK\_APP=app.py. * Luego, agregué el comando CMD \["flask", "run", "--host=0.0.0.0"] en el Dockerfile para ejecutar Flask y hacerlo accesible desde cualquier interfaz de red, algo que encontré en un flujo de GitHub Actions. * Después, construí la imagen Docker con docker build -t apiweb:latest ., donde le asigné el nombre apiweb:latest. * Finalmente, creé y ejecuté el contenedor con docker run -it --rm -d -p 8080:5000 --name apiweb apiweb:latest, exponiendo la API en el puerto 8080 de mi máquina local. ```js FROM python:3.12-alpine3.19 WORKDIR /app COPY requirements.txt requirements.txt RUN pip install -r requirements.txt COPY . . ENV FLASK_APP=app.py CMD ["flask", "run", "--host=0.0.0.0"] ```FROM python:3.12-alpine3.19 WORKDIR /app COPY requirements.txt requirements.txtRUN pip install -r requirements.txt COPY . . ENV FLASK\_APP=app.py CMD \["flask", "run", "--host=0.0.0.0"]
Tengo dudas al minuto 1:49. No me devolvio la info con la IP local
No entendi porque el profe puso COPY . . SI ya lo estamos haciendo arriba.

Estoy amando este curso, apenas lo termine espero encontrar uno de Python del mismo profe

Con este curso pude migrar mi proyecto. Muy bien explicado.