JUAN JOSE BAILON CALDERON
EstudianteLuis Efren Rojas Montañez
EstudianteEdgar Benítez
EstudianteKlever Dario Hidalgo Alban
EstudianteFrancisco Javier Pecino Leon
EstudianteMiguel Angel Reyes Moreno
EstudianteFidel Parabacuto
EstudianteArelys Viloria
EstudianteDanilo Ibarra Jiménez
EstudianteChanel Mariannis Paredes Sánchez
EstudianteUlises Alejandro Mánica Caricio
EstudianteDiego Jurado
EstudianteAlejandro López
EstudianteEnrique Alejandro Terrazas Huamaní
EstudianteRENÉ CARDOSO
EstudianteJonathan Velasquez
EstudianteAndres Felipe Figueredo Perez
EstudianteBryan Carvajal
EstudianteJeinfferson Bernal G
EstudianteJeinfferson Bernal G
EstudianteAndres Sanchez
EstudianteJose Alejandro Pantoja Giraldo
Estudiantejhon velasque
EstudianteCarlos Vidal
EstudianteAndres Cervantes
EstudianteAndres Cervantes
EstudianteChelsy Mena
EstudianteDiego Vergara
EstudianteJosé Reinaldo Duque Serna
EstudiantePaola Alapizco
EstudianteOscar Berrocal
EstudianteMauricio Pérez
EstudianteJosé Antonio Contreras Ortiz
EstudianteJosé Antonio Contreras Ortiz
EstudianteDiego Cesar Lerma Torres
EstudianteBobionwa .
EstudianteJavier Benítez Malia
EstudianteMiguel Gomez
EstudianteComento el pequeño problema que tuve, cuando intentaba correr el comando docker-compose build, obtenia un mensaje de error diciendo que el comando docker-compose no se habia encontrado y que debia instalarlo, pero al revisar mi version de compose
$ docker compose version
todo salia bien, compose estaba instalado.
Pero revisando la ducumentacion de docker sobre como usar compose, utilizaban el comando de la siguiente forma docker compose (sin el - ), cabe destacar que estoy usando PopOS(distro con base en ubuntu) y que NO instale docker desktop , tampoco realize la creacion del docker group posteriormente despues de la instalacion de docker por lo cual todo los comandos del video los tuve que realizar usando sudo
Dicho lo anterior, al no tener docker desktop no tuve que realizar ese paso del video, los camandos los ejecute de la siguiente manera:
$ sudo docker compose build
$ sudo docker compose ps
$ sudo docker compose up -d
$ sudo docker compose exec app-csv bash
Al hacerlo de esta forma todo salio sin ningun problema.
Maestro, muchas gracias, me ayudaste un montón.
Muchas gracias , ya no me marca error
Dockerfile
FROM python:3.8 WORKDIR /app COPY requirementes.txt /app/requirementes.txt RUN pip install --no-cache-dir --upgrade -r /app/requirementes.txt COPY . /app/ CMD bash -c "while true; do sleep 1; done"
Archivo docker-compose-yml
services: app-csv: build: context: . dockerfile: Dockerfile
me salvaste la vida, juraria haberlo escrito igual pero con tu copia pega solucionado. Gracias GRANDEEEE
PD: Ojo, el archivo es requirements.txt y os puede dar fallo por ello
Tu dockerfile tiene 3 errores. Escribiste 'requirementEs' en vez de 'requirements'
docker-compose build: Este comando se utiliza para construir las imágenes de los servicios especificados en el archivo "docker-compose.yml". Esto significa que tomará las especificaciones de construcción de cada servicio, como el Dockerfile y los contextos, y creará una imagen nueva y actualizada.
docker-compose ps: Este comando se utiliza para ver el estado de los servicios especificados en el archivo "docker-compose.yml". Muestra si los servicios están corriendo o detenidos, y también muestra el nombre del contenedor, el puerto y la imagen utilizada.
docker-compose down: Este comando se utiliza para detener y eliminar los contenedores, redes y volúmenes creados por "docker-compose up".
docker-compose up -d: Este comando se utiliza para iniciar los servicios especificados en el archivo "docker-compose.yml" en segundo plano. El parámetro "-d" indica que se ejecutará en segundo plano.
docker-compose ps: Es el mismo comando que el segundo, pero se repite para mostrar el estado de los servicios después de haber sido iniciados.
docker-compose exec app-csv bash: Este comando se utiliza para ejecutar una terminal dentro del contenedor especificado, en este caso "app-csv", y conectarse a él mediante una sesión interactiva de bash. Esto permite realizar tareas dentro del contenedor, como verificar los archivos o ejecutar comandos.
Esta clase está un poco fuerte aah? voy a dejarles mis apuntes, mi explicación del código, e información importante que creo que creo que le faltó a la clase para entenderlo todo mejor: .
++Código++:
FROM python:3.8 WORKDIR /app COPY requirements.txt /app/requirements.txt RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt COPY . /app CMD bash -c "while true; do sleep 1; done"
services: app-csv: build: context: . dockerfile: Dockerfile
++Explicación del código:++ .
++Docker compose:++ Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multicontenedor. Permite definir los servicios, las redes y los volúmenes de la aplicación en un único archivo, y poner en marcha la aplicación con un único comando. . El logo de docker compose es muy auto descriptivo:
. ++¿que es una imagen en docker compose?++ . Una imagen en Docker es un archivo o file que se encuentra compuesto de diversas capas y que se utiliza con el objetivo de ejecutar un código dentro de un contenedor de Docker. Estas imágenes contienen todo el sistema de ficheros inicial en los que se va a basar el container para su funcionamiento, así como su punto de entrada o entrypoint. . Este punto de entrada se refiere a la aplicación o comando que deberá ejecutarse una vez que el usuario lance un contenedor que esté asociado a esa imagen en Docker. . De manera que estas imágenes se encargan de actuar como un script o conjunto de instrucciones útiles para construir un contenedor en Docker, así como una plantilla. De la misma forma, una imagen en esta plataforma funciona como un punto de partida cuando el usuario utiliza Docker. . ++¿Qué es una red en dockers?++
Las redes en Docker son una herramienta que se encarga de definir cómo se comunicarán los contenedores de la plataforma entre sí. . ++¿Qué es un volumen en docker compose?++ Un volumen de contenedor permite conservar los datos, aunque se elimine el Docker container. Los volúmenes también permiten un intercambio práctico de datos entre el host y el container. Crear un volumen de Docker es una buena solución para poder: Transferir datos a un contenedor de Docker. . ++Para correr el docker-compose a través de la terminal los comando:++ .
docker-compose build docker compose build
docker-compose ps docker compose ps
docker-compose down docker compose down
docker-compose up -d docker compose up -d
docker-compose exec app-csv bash docker compose exec app-csv bash
excelente aporte, graciass
Muchas gracias por tu gran aporte.
Cuando te das cuenta que estas corriendo un contenedor con un sistema dentro de un subsistema dentro de un sistema: [](
Siento que este tema de docker requiere todo un curso para su implementación y funcionamiento. Platzi lo tiene https://platzi.com/cursos/docker/
Para los que tengan este error:
En el mismo error se puede leer que nos dicen que se necesita Python 3.9 para cumplir con todos los requirements, la solución es simplemente cambiar la primera línea del Dockerfile por esta:
FROM python:3.9
Y listo :D
Muchas gracias, me sirvió tu solución
excelente, gracias!
a mí me pasó con la versión del numpy. Elegí la más reciente de las que me ofrecía, edité los requirements, y ya con eso funcionó lo demás.
Formas simples de solucionar lo que parece complicado. Para quienes disfrutan WSL2
sudo docker-compose build
Me salvaste hermano xd
Para construir el contenedor
<aside> 💡 Debemos tener inicializado el docker </aside>docker-compose build
Para lanzar digitamos el comando
docker-compose up -d
Para ver el estado del contenedor
docker-compose ps
Para ejecutar el contenedor
docker-compose exec app-csv bash
Gracias por el resumen!
Agrego el comando para bajar la aplicacion de docker
docker-compose down
17. Dockerizando scripts de Python
docker-compose build # Para crear el docker docker-compose up -d # Para lanzarlo docker-compose ps # Para ver el estado del contenedor docker-compose exec app-csv bash # Para ingresar al docker y desarrollar ahi
La verdad me siento medio fundido con esta clase, pero eventualmente volveré a ella porque por lo que sé, docker es muy utilizado.
Yo hice lo mismo y funciono ,me ahorre la frustracion
Necesito ayuda, al correr el comando "docker_compose build" la terminal zsh me arroja el siguiente mensaje: permission denied: docker-compose, tuve probleas en la instalacion la verdad no me quedo claro si hice las cosas bien
hola, probablemente tengas problemas con las credenciales. Te sugiero traducir la página para un correcto entendimiento https://docs.docker.com/desktop/get-started/#credentials-management-for-linux-users
Primero instala Docker Engine Posterior instala Docker Desktop Si es tu caso usas Ubuntu. si usas otro OS. Busca tu proceso, pero tienes que tener Docker Engine y Docker Desktop. Trata de desistalar e instalar nuevamente.
Confirmo lo que entiendo
compose lo crea, luego up lo activa, con exec entro al contenedor, si uso compose de nuevo lo sobrescribo sin importar que esté activo, con exit salgo pero no lo apago, down lo apaga.
Y si lo quiero borrar? En vez de sobrescribirlo.
Es necesario copiar la carpeta env al Docker file?
Hola Diego. No es necesario copiar el directorio env, ya que con Docker ya se está creando un nuevo ambiente virtual a través de contenedores.
Hola Diego :D no es necesario agregar la carpeta env al contenedor, ya que esa carpeta es para el entorno virtual creado con venv, en mi caso yo solo copie los archivos .py y e.csv, te dejo mi archivo dockerfile por si te es de ayuda :D
FROM python:3.8 WORKDIR /app COPY requirements.txt /app/requirements.txt RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt COPY *.py *.csv /app RUN mkdir /app/imgs CMD bash -c "while true; do sleep 1; done"
Un pequeño dato curioso y es que al momento de ejecutar el ++docker-compose build++ me envio un error en la line a de codigo
RUN pip install --no-cache-dir --upgrade -r /app/requirement.txt
y era que apesar de tener el entorno no me lo ejecuto como pip3 asi que lo cambie y funciono nose si a alguien le paso igual o les funsiono como dijo el profesor
Otra cosa que hay que tener en cuenta es que si se esta usando una version de Python superior a la 3.8 al momento de armar el Dockerfile hay que cambiar la version de Python por la version que se usa de manera local, sino va a haber un error de compatibilidad en las dependencias.
Este tutorial lo estoy tomando el 11/12/2023, por si alguna razon te aparece el error en el pip install sobre los requirements, probablemente se deba a las versiones que estas utilizando, especificamente la de matplotlib, si te empieza a fallar solo borra los requirements y pon la siguiente linea, de lo demas se encarga docker
matplotlib==3.7.4
pandas=2.0.3
Al ejecutar el código del profesor en la parte de sudo docker-compose up -d me dio el siguiente error:
8.936 ERROR: Ignored the following versions that require a different python version: 1.2.0 Requires-Python >=3.9 8.938 ERROR: Could not find a version that satisfies the requirement contourpy==1.2.0 (from versions: 0.0.1, 0.0.2, 0.0.3, 0.0.4, 0.0.5, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.0.7, 1.1.0, 1.1.1rc1, 1.1.1) 8.940 ERROR: No matching distribution found for contourpy==1.2.0 9.915
El problema se debe a que, al crear mi requirements.txt lo hice con las versiones más actuales de matplotlib y pandas para marzo de 2024. Y al hacer un downgrade a Python por la versión 3.8 como indicó el profesor, por supuesto que dio error al buscar compatibilidad entre la versión 3.8 de Python y la versión de marzo de 2024 de matplotlib y pandas. Lo que hice fue depurar mi requirements.txt con solo lo necesario y versiones razonables de las librerías requeridas
Si tienes el mismo error puedes copiar lo siguiente en tu requirements.txt y se va a resolver:
matplotlib==3.7.4 numpy>1 pandas==2.0.3
EXPLICA BIEN REYYYYY!!!
Tengan cuidado si ven este curso en estos días:
Dentro de Dockerfile, habrá que escribir en la primera línea de código (si tu versión de Python es superior a la 3.8)
FROM python:3.10
Si no escriben eso, le puede dar fallo a la hora de utilizar el comando docker-compose build
Me gustaría compartirles una solución a un error que se me presentó. Realizando esta clase tuve un error al crear el contenedor en docker:
error: failed to solve: process “/bin/sh -c pip install –no-cache-dir -r requirements.txt” did not complete successfully: exit code: 1
Revisando a fondo me di cuenta que otros errores previos eran arrojados:
3.522 ERROR: No matching distribution found for numpy==1.25.0 pip install numpy doesn't work: "No matching distribution found"
Este error se debe a que en una de las clases anteriores se instala la última version de numpy, y para cuando estoy tomando la clase la version es 1.25.5 la cual no es compatible con python 3.8 (la versión que se quiere instalar con docker). La solución está en bien cambiar la versión de numpy a una compatible con py 3.8 o bien cambiando la versión de py que se quiere instalar con docker. Yo me fui por la primera opción.