Felipe Vidal
EstudianteAlberto Hernandez
EstudianteSergio Andrés Piratoba Forero
EstudianteCarlos Rodríguez
EstudianteDiego Jurado
EstudianteMaría José Medina
EstudianteElian Camilo Angarita Sanguino
Estudiantemagnof chak
EstudianteJeinfferson Bernal G
EstudianteAlejandro Martínez Valencia
EstudianteQoqo Baldovino
EstudianteLuis augusto dordelly medina
EstudianteDelaskar Caicedo
EstudianteIrving Daniel Reyes Elizondo
EstudianteJovanny Delgado
Estudianteiecgerman .
EstudianteBrahian Diaz
EstudianteKevin Acosta
EstudianteCarlos Daniel Amado Velandia
EstudianteMateo Paloma
EstudianteJUAN MANUEL ARMERO VIVEROS
EstudianteAugusto Gabriel Luna Bardales
EstudianteIván Alexis Nocua Benitez
EstudianteSamuel Ricardo Duncan Vides
EstudianteIván Alexis Nocua Benitez
EstudianteBobionwa .
EstudianteMauro Benito Montoya Arenas
EstudianteEnrique Alejandro Terrazas Huamaní
EstudianteFabián Chacón
EstudianteMichael Nassee Buritica Ortega
EstudianteLeandro Tenjo
EstudianteMaría Eugenia Pereira Chévez
EstudianteCamilo Mejía
EstudianteEdwin Cáceres Silva
EstudianteJissel Alba
EstudianteAntes le tenia miedo a Docker porque no entendí como era que funcionaba, hoy me siento enamorado de esta herramienta ... Gracias totales ♥
si lo util que es, a veces las maquinas virtuales como virtualbox se portaban caoticas
Me sucedía igual. Gracias Nicolas Molina por ayudarme a superar ese temor jajajaja.
Docker es una maravilla, excelente módulo de este curso acerca de docker.
El curso renovado se ha complementado con este tema de docker, una herramienta muy útil.
En mi caso me salio el siguiente error:
Error response from daemon: driver failed programming external connectivity on endpoint web-server-web-server-: Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use
Tenia otro servidor activo en el puerto 80, asi que para solucionarlo utilice el puerto 8080 de mi local. En el docker-compose.yml quedo:
services: web-server: build: context: . dockerfile: Dockerfile volumes: - .:/app ports: - '8080:80'
Para ver los resultados en el navegador fui a la direccion:
localhost:8080localhost:8080/contactLo dejo por si le sirve a alguien :D
Muy interesante, me paso junto porque tengo instalado Apache2 y claro, ya se esta utilizando el puerto 80. Muchas gracias por la solución!
genia
Dockenizando Web Services
Agrega los siguientes archivos en el proyecto web services
Archivo Dockerfile
FROM python:3.10 WORKDIR /app COPY requirements.txt /app/requirements.txt RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt COPY . /app CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
Archivo docker-compose.yml
services: web-server: build: context: . dockerfile: Dockerfile volumes: - .:/app ports: - '80:80'
luego, ir a la terminal y construir el contenedor con el siguiente comando
docker-compose build
docker-compose up -d
docker-compose ps
Finalmente, abrimos localhost en Google y verificamos que arroje lo que esperamos.
Compañeros, les dejo como ejemplo mi repo, donde dockerize Jupyter Lab. Esto fue pensado para poder desplejar un servidor de Jupyter en algún servidor remoto, y tener un servicio personal y privado tipo Google Colab. Personalmente lo tengo corriendo en una Raspberry Pi. Les recomiendo que vean los archivos Dockerfile y el docker-compose.yml, y verán que no es tan diferente al presentado en clase :D Ojalá les sirva. https://github.com/alexini-mv/docker-jupyterlab
Antes le tenia miedo a Docker, ahora le tengo más miedo.
pase de junior a >>> senior en 6 minutos.!!! con esta clase.!! 🤣🤣🤣 la mejor clase gracias profe gracias platzi por existir .!!!
Jajajaja!
Uvicorn es un servidor ASGI de alto rendimiento que usaremos para correr nuestra aplicación, si queréis más info acerca de esta librería os dejo en enlace a su página pinchando aquí.
¿Qué es un ASGI?
https://asgi.readthedocs.io/en/latest/
ASGI (Asynchronous Server Gateway Interface) is a spiritual successor to WSGI, intended to provide a standard interface between async-capable Python web servers, frameworks, and applications.
Where WSGI provided a standard for synchronous Python apps, ASGI provides one for both asynchronous and synchronous apps, with a WSGI backwards-compatibility implementation and multiple servers and application frameworks.
Podman es la nueva tecnologia Podman es una herramienta de código abierto que permite la gestión de contenedores en entornos Linux. Al igual que Docker, Podman se utiliza para crear, ejecutar y gestionar contenedores, pero con algunas diferencias clave.
Una de las principales diferencias entre Podman y Docker es su arquitectura. Mientras que Docker utiliza un demonio centralizado para administrar los contenedores, Podman se basa en un enfoque sin demonio. Esto significa que los contenedores en Podman se ejecutan como procesos independientes y no requieren un demonio central para su funcionamiento. Esto proporciona ventajas en términos de seguridad y facilidad de uso, ya que no es necesario tener privilegios de superusuario (root) para ejecutar contenedores con Podman.
Además, Podman es compatible con el estándar de OCI (Open Container Initiative), lo que garantiza la interoperabilidad y portabilidad entre diferentes herramientas y entornos que también cumplen con este estándar. Esto permite que los contenedores creados con Podman sean ejecutados en otros entornos de contenedores compatibles.
En resumen, Podman es una alternativa a Docker que ofrece una gestión de contenedores similar, pero con un enfoque sin demonio y un mayor énfasis en la seguridad y la portabilidad a través del estándar de OCI. Podman es especialmente popular en entornos Linux donde se valora la facilidad de uso y la separación de privilegios.
al parecer tienes razón
Compañeros, trabajo en linux, al docker-compose.yml, se le debe agregar la version y cambiar el puerto asi:
version: "2" services: web-server: build: context: . dockerfile: Dockerfile volumes: - .:/app ports: - '8080:80'
gracias, tenia ese problema
si se usan contenedores docker seria innecesario el tema de los entornos virtuales verdad?
Si, pero al menos ya sabes dos maneras en las que uno como programador se acomoda a como uno le quede mejor
diría que si y no =S. Desde mi punto de vista un entorno virtual es útil cuando se desea aislar dependencias sin requerir aislar la versión de python.
Pero si requiero distintas versiones de python, ahí Docker mi salvación.
Para tener en cuenta en este link Documentacion de Puertos Docker
podemos saber sobre como funciona los puertos y cambiarlos por defecto cuando estas usando un servicio web en tu maquina con el puerto por defecto 80
¿Por que los directorios seguimos referenciandolos a "/app"? ¿No tendriamos que referenciarlos TODOS a "/web-server" ?
Si te refieres a la línea 3 del Dockerfile ese ‘app’ no es la carpeta app sino un nombre cualquiera que se le da a WORKDIR, justo en el minuto 1:23 de la clase 17 lo dice. . En el proyecto de la carpeta app se usó el nombre ‘app’, para este proyecto de web-server copió y pegó el código, dejando el mismo nombre para WORKDIR
Tienes razón es un nombre que le damos. Graaacias :D
Hola Creaturitas del señor, seres de luz No me parecio nada bien explicado este modulo de Docker, asi que le investigue un poquillo y lo que aprendi lo deje en mis notas, asi que aqui estan: En notion . . ++++Recordar:++++ Docker: Es una plataforma de codigo habierto que te permite encapsular toda una aplicaciones con sus librerias, dependencias y condifguracion del sistema. Esto permite la portabilidad de la app para poder funcionar en otros entornos, sistemas operativos o maquinas virtuales . . ++++Notas:++++ Para hacer un contenedor de nuestro proyecto, necesitamos dos archivos para configurar el contenedor y hacerlo funcionar:
Como dockerizar nuestro proyecto:
.
En tu proyecto primero tienes que definir las intrucciones de tu imagen del contenedor en un archivo Dockerfile, y si tienes multipres contenedores en tu proyecto puedes agregar el archivo docker-compose.yml. Un ejemplo seria con la carpeta replitCharts(App):
###Dockerfile### FROM python:3.8 #Define que la imagen base del contenedor sera la imagen predeterminada de Python WORKDIR /app #Este es el directorio del conedor, donde se ejecutaran los archivos y comandos siguientes COPY requeriments.txt /app/requeriments.txt #Copiara el archivos de las dependencias al contenedor RUN pip install --no-cache-dir --upgrade -r /app/requeriments.txt #Corre 'pip install' dentro del contenedor para descargar las dependencias COPY ./ /app/ #Copiara todos los archivos del directorio actual al contenedor CMD bash -c "while true; do sleep 1; done" #Cuando se inicie el contenedor, con el bucle infinito hara que permanezca activo el contenedor
###docker-compose.yml### services: app-csv: build: context: . #El contexto de nuestro contenedor esta en el directorio actual dockerfile: Dockerfile #Utiliza la imagen ta creada en el Dockerfile volumes: - .:/app #Crea un volumen que vincula el directorio actual con el del contenedor. #Esto hace que se reflejen los cambios en tiempo real en nuestro contenedor
. Antes de todo esto debes tener Docker Desktop instalado con la opcion de Servicios de Ubuntu habilitada
Ahora construiremos el contenedor con este comando. Acuerdate de actualizar tu archivo requeriments.txt antes de hacer esto. docker-compose build , aqui ya construimos el contenedor, ahora para lanzarlo y que se active ponemos docker-compose up -d, ahora para entrar al a nuestro contenedor utilizar docker-compose exec app-csv(Nombre de tu contenedor) bash . Si queremos salir de contenedor dentro de la bash usamos el comando exit. Para para de correr el contendor ponemos docker-compose down
Técnica bastante legendaria: Copiar y pegar xd
Me cagué de risa jaja
No me funciona cuando ingreso en la pagina web localhost
Revisa que el comando de CMD en el archivo Dockerfile este entre Corchetes Cuadrados y NO entre llaves.
…
Ese fue un pequeño error que tuve yo.
Lo que no he podido hacer es recrearlo con conda.
No entiendo por qué está usando como directorio de trabajo la carpeta app, yo hice mi docker así:
FROM python:3.10 WORKDIR /web-server COPY requirements.txt /web-server/requirements.txt RUN pip install --no-cache-dir --upgrade -r /web-server/requirements.txt COPY . /web-server CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
Es el nombre de la carpeta del proyecto. Según tu Dockerfile el tuyo se llama web-server
Yo tuve que hacer la creación de varios contenedores en mi trabajo, pero solo seguía las instrucciones de mi líder. Gracias a este curso entendí lo que estaba haciendo, muy beun cruso, Gracias