No tienes acceso a esta clase

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

Dockerizando scripts de Python

17/20
Recursos

Aportes 78

Preguntas 41

Ordenar por:

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

Comento 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.

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
    

  • 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: 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. Es posible que tengas que usar sudo si te denega la acción, de hecho creo que la mayoría necesita el sudo.
docker-compose build

docker compose build
  • 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. ESte comando se repite una vez iniciado el servicio para mostrar su estado una vez iniciados.
docker-compose ps

docker compose ps
  • docker-compose down: Este comando se utiliza para detener y eliminar los contenedores, redes y volúmenes creados por “docker-compose up”.
docker-compose down

docker compose down
  • 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 up -d

docker compose up -d
  • 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.
docker-compose exec app-csv bash

docker compose exec app-csv bash

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 😄

Formas simples de solucionar lo que parece complicado.
Para quienes disfrutan WSL2

  • Activar la distribución de Linux en Docker.
  • Utilizar sudo antes del comando.
sudo docker-compose build
  • 1
  • 2

Para construir el contenedor

docker-compose build

<aside>
💡 Debemos tener inicializado el docker

</aside>

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

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.

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

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

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.

Si te sale un error
Additional property service is not allowed

En el archivo docker-compose.yml seguro escriviste service en vez de services.

Junio del 2024. Alguien tiene problemas con pycairo? Mis problemas empezaron al ejecutar el comando `sudo docker-compose build` No se construyo nada y me aparecio el siguiente error: ` ERROR [app-csv 5/6] RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt` Hice diferentes acciones para que funciones, como cambiar la version de python, revisar mi WSL2, agregar una linea en el Dockerfile para que actualice PIP, cambiar el "pip' por 'pip3', pero nada resultaba. Aisle el error, y corri el comando por mi propia cuenta y salia el siguiente error: `ERROR: Could not open requirements file: [Errno 2] No such file or directory: '/app/requirements.txt'` Revise y el archivo esta en esa direccion. Para probar, corri el comando sin la 'app': `ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'` Y funciono .... en parte. Salio el siguiente error ` Building wheel for pycairo (pyproject.toml) ... error` `Building wheel for pycairo (pyproject.toml) did not run successfully.` ` No package 'cairo' found` Trate de instalarlo por mi propia cuenta pero sigue sin funcionar. Si alguien sabe como lo puedo arreglar, lo agradeceria.

Por alguna razón tuve un error chungo en el paso 4/5 de la creación del contenedor que corregí cambiando la versión de Python a 3.9:

FROM python:3.9

para los que no les sale un error en esta parte "RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt" al ejecutar docker-compose build, traten de reemplazar en el Dockerfile "FROM python:3.8" por "FROM python:3.9" o otra versión más reciente

tuve un error de argumentos , y tenia que escribir la imagen
quedo asi

<FROM ubutu:22.0.1> 

Consejo: tomen en cuenta los pre requisitos de la instalación docker y síganlos al pie de la letra si no no va a funcionar.

En mi caso, no podía crear el contenedor por la versión de numpy que tenía en el "requirements.txt", tuve que actualizarlo a esta versión (les comparto el código completo): ```python blessed==1.20.0 contourpy==1.3.0 cycler==0.12.1 editor==1.6.6 fonttools==4.53.1 inquirer==3.4.0 kiwisolver==1.4.7 matplotlib==3.9.2 numpy==1.24.4 packaging==24.1 pandas==2.2.2 pillow==10.4.0 pyparsing==3.1.4 python-dateutil==2.9.0.post0 pytz==2024.1 readchar==4.2.0 runs==1.2.2 six==1.16.0 tzdata==2024.1 wcwidth==0.2.13 xmod==1.8.1 ```
Alguien sabe porque se da el siguiente error: import matplotlib.pyplot as plt ModuleNotFoundError: No module named 'matplotlib'
Para quienes están trabajando desde Ubuntu, puede que les aparezca un error a la hora de ejecutar "docker-compose build", En mi caso, se trataba de un error de permisos, pude solucionarlo al conceder los permisos usando: 1. "docker run hello-world" Para comprobar una correcta instalación y funcionamiento de Docker 2. ¨sudo ls -l /var/run/docker.sock" Para confirmar cuales permisos tenemos y cuales no 3. "sudo chmod 777 /var/run/docker.sock" para confirmar todos los permisos Espero que a alguien le sea de utilidad, literal estuve casi 2 días tratando de averiguar cuál era mi error
Aquí tienes un resumen de las 5 razones para dockerizar aplicaciones: 1. **Portabilidad**: Garantiza que la aplicación funcione igual en cualquier entorno. 2. **Aislamiento**: Evita conflictos entre aplicaciones y dependencias. 3. **Despliegue y Escalabilidad**: Facilita el despliegue rápido y la escalabilidad. 4. **Eficiencia de Recursos**: Optimiza el uso de recursos al ser más ligero que las máquinas virtuales. 5. **Integración Continua**: Mejora el proceso de CI/CD al automatizar pruebas y despliegues.
Si tienes problemas con la versión, intenta con: sudo docker compose build en lugar de: docker-compose build
Por si a alguien le pasa. Al ejecutar "docker-compose up -d" me mostró el siguiente mensaje: "UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)" Lo solucioné apagando el docker, seteando las variables "DOCKER\_CLIENT\_TIMEOUT" y "export COMPOSE\_HTTP\_TIMEOUT=120" y volviéndolo a iniciar: `docker-compose down` `export DOCKER_CLIENT_TIMEOUT=120` `export COMPOSE_HTTP_TIMEOUT=120` `docker-compose up -d`

ya me estoy aburriendo, cada clase me sale error y pierdo mucho tiempo solucionando, las clases están desactualizadas, y entre cursos que no tienen relación desconfiguran todo, veo que no resuelven las dudas, leí varios comentarios que les pasa lo que a mí, pero no les ayudan.

Tengo WSL2, estaba utilizando ubuntu para esta clase. Tenia el siguiente error: **permission denied while trying to connect to the Docker daemon socket** Para solucionarlo, agregue 'sudo' antes de escribir el comando. Ejemplo: `sudo docker-compose build` Hay mas informacion en la siguinete pagina web: <https://linuxhandbook.com/docker-permission-denied/>
Me daba error en versión de Python que figura en la clase y al descargar dos librerías así que cambié a Pythpn 3.9.19 y con estas librerías y versiones kiwisolver==1.4.4 numpy==1.23.3 packaging==21.3 pandas==2.1.0 matplotlib==3.6.0 y medio todo bien ,con los mismos comandos del profe
Adicionalmente tuve que realizar un par de ajustes en mi Dockerfile y docker-compose.yml Dockerfile `# Usa una imagen base de Python``FROM python:3.10.12` `# Establece el directorio de trabajo en /app``WORKDIR /app` `# Copia el archivo de requerimientos para instalar las dependencias``COPY requirements.txt /app/requirements.txt` `# Instala las dependencias``RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt` `# Copia todo el contenido actual en el directorio de trabajo (/app) al contenedor``COPY . .` `# Define el comando que se ejecutará cuando se inicie el contenedor``CMD ["python3", "main.py"]` docker-compose.yml `services: app-csv: ``# Define un servicio llamado "app-csv"`` build: ``# Define cómo se va a construir la imagen del contenedor`` context: . ``# El contexto de construcción es el directorio actual`` dockerfile: Dockerfile ``# Especifica el archivo Dockerfile a utilizar para construir la imagen`` volumes: ``# Configura los volúmenes para montar el código fuente en el contenedor`` - .:/app ``# Monta el directorio actual en el directorio /app dentro del contenedor`` working_dir: /app ``# Establece el directorio de trabajo dentro del contenedor`` command: bash -c "while true; do sleep 1; done" ``# Especifica el comando a ejecutar cuando se inicie el contenedor`` ``# Este comando mantendrá el contenedor en ejecución, esperando indefinidamente.`
Me parece genial este tipo de herramientas....
Para los que están empezando esta clase salió una nueva versión de python, ya que cuando yo le ponia en el documento de Dockerfile From Python:3.8 me marcaba error en el RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt Les dejo como lo hice por si les llega a pasar: FROM python:3.9 WORKDIR /appCOPY 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"
Para distribuciones de **ubuntu** es necesario primero ejecutar: > sudo systemctl unmask docker > sudo systemctl start docker Luego inicializar la construcción del docker (**Docker desktop** debe estar encendida) : `sudo docker compose build` Para lanzar el docker: `sudo docker compose up -d` Para ver el estado de los docker: `sudo docker compose ps` Ingresar al docker: `sudo docker compose exec app-csv bash` Para bajar el contenedor: `sudo docker compose down`
Si te arroja el siguiente error: ![](https://static.platzi.com/media/user_upload/image-38031044-68ed-4ff1-bbed-6845ee1be1c2.jpg) Lo que se debe hacer es ingresar en Docker Desktop: ![](https://static.platzi.com/media/user_upload/image-40f717e3-30d9-4ea6-8626-ec991b315961.jpg) Dar clic en Apply & restart
Paso como me toco, a mi realizar la clase fecha 22/01/2024 ```js ### Crear el contenedor como me toco `docker-compose -f docker_compose.ym build` ### Lanzar el contenedor `docker-compose -f docker_compose.yml up -d` ### Estado de los contenedores `docker-compose -f docker_compose.yml ps` ### Ingresar al conteneror `docker-compose -f docker_compose.yml exec app-csv bash` y para salir del contenedor se usa `exit` ```### Crear el contenedor como me toco `docker-compose -f docker\_compose.ym build` \### Lanzar el contenedor `docker-compose -f docker\_compose.yml up -d` \### Estado de los contenedores `docker-compose -f docker\_compose.yml ps` \### Ingresar al conteneror `docker-compose -f docker\_compose.yml exec app-csv bash` y para salir del contenedor se usa `exit`

Me gusto esta experiencia de trabajo en un contenedor. Es muy importante saber trabajar con este y estar muy atento al trabajo de este para evitar conflictos al momento de trabajar.

Les cuento que me estaba saliendo un error luego de correr el `sudo docker-compose build ` Por un lado tuve que correr el comando como sudo, pero el error era este: `=> ERROR [app-csv 4/5] RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt 1.6s` `------` ` > [app-csv 4/5] RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt:` `1.225 Processing /work/ci_py311/bottleneck_1676827011612/work` `1.230 ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/work/ci_py311/bottleneck_1676827011612/work'` `1.230` Así que le pregunté a chatGPT por la solución y me dijo que debía agregar una línea al archivo Dockerfile. `RUN pip install --upgrade pip` De esta manera el archivo queda así: ```js FROM python:3.8 WORKDIR /app COPY requirements.txt /app/requirements.txt RUN pip install --upgrade pip RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt COPY . app/ CMD bash -c "while true; do sleep 1; done" ``` ya con eso me funcionó.
Que buen curso, estaba buscando como pasar a productivo un proyecto que tengo!
Yo tomé el curso de Docker antes de tomar este curso y se los recomiendo infinitamente. Como aporte les dejo mi manera de hacer lo que se nos pide en esta clase, pero siguiendo las buenas prácticas y recomendaciones que vienen en el curso de Docker. Empezando por el Dockerfile al cuál le cambié la forma de ejecutar los comandos, usando el formato EXEC en vez del CMD que se usa en la explicación. ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202023-11-15%20220437-ba5cc46b-1f1f-4fe6-b7f9-01c491593bfa.jpg) Luego el comando que queremos como predeterminado para que el contenedor lo definí en otro script llamado loop.sh ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202023-11-15%20220557-a3dc7b5d-156a-4f7d-a870-06def079f6ec.jpg) También usé un .dockerignore, que funciona básicamente igual que el gitignore que ya usamos en clases pasadas, para evitar cargar el entorno virtual que ya habíamos creado. ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202023-11-15%20220843-0a8b88b2-dcdc-4a5f-8090-444ab7ce655d.jpg) Y finalmente especifiqué la versión de docker-compose a usar en el docker-compose.yml ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202023-11-15%20220903-4089b589-18b9-4324-b2eb-808736f4554b.jpg) Espero que les sirva! :D

Genial…!

Al tratar de ejecutar los comandos de docker obtenía el siguiente mensaje: "permission denied while trying to connect to the Docker daemon socket at unix:". Para solucionarlo antepuse el comando "sudo" y pude ejecutarlos sin problemas, quedando por ejemplo así: "sudo docker-compose build". Lo comento por si a alguien le sirve, de todos modos también se debe poder solucionar gestionando los permisos, si alguien sabe cómo avisen.

Si no les sirve:

$ docker-compose

Probablemente les sirva:

$ docker compose

Si quieren usar el alias docker-compose pueden activarlo en la configuración de Docker Desktop:

Hola a todos. luego de correr los pasos como les enseña el profe me sale esto: ➜ app git:(main) ✗ docker-compose build \[+] Building 0.6s (8/10) docker:desktop-linux \=> \[app-csv internal] load .dockerignore 0.0s \=> => transferring context: 2B 0.0s \=> \[app-csv internal] load build definition from dockerfile 0.0s \=> => transferring dockerfile: 239B 0.0s \=> \[app-csv internal] load metadata for docker.io/library/python:3.8 0.4s \=> \[app-csv auth] library/python:pull token for registry-1.docker.io 0.0s \=> \[app-csv 1/5] FROM docker.io/library/python:3.8@sha256:7a82536f5a2895b70416ccaffc49e6469d11ed8d9bf6bcfc52328faeae7c7710 0.0s \=> \[app-csv internal] load build context 0.2s \=> => transferring context: 864.41kB 0.2s \=> CACHED \[app-csv 2/5] WORKDIR /app 0.0s \=> ERROR \[app-csv 3/5] COPY requirementes.txt /app/requirementes.txt 0.0s \------ \> \[app-csv 3/5] COPY requirementes.txt /app/requirementes.txt: \------ failed to solve: failed to compute cache key: failed to calculate checksum of ref b35ce5e5-2b81-4601-addd-b7fa81bea6dc::ocp0bfvadco1x0bal2wr7r9qy: "/requirementes.txt": not found
Estos son los archivos docker actulizados a fecha de noviembre de 2023 para python3.10: Dockerfile: `FROM python:3.10` `WORKDIR /appCOPY 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"``]` docker-compose.yml: `services``:  ``web-server``:    ``build``:      ``context``: .      ``dockerfile``: ``Dockerfile``    ``volumes``:      - ``.:/app``    ``ports``:     - ``'80:80'`

Me daba error de docker-compose.yml y era porque en la lInea habIa escrito service en vez de sevices

services:
    app-csv:  # Name server
        build:
            context: .  # Construir container from Folder Donde estoy ubicado (Folder /app local)
            dockerfile: Dockerfile  # Execute file Dockerfile

Para los que estan en ubuntu y quieren utilizar del docker sin el comando sudo: <https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-es> ![](https://static.platzi.com/media/user_upload/image-0bb091d2-03c2-4257-8635-500af2977b56.jpg)
necesito ayuda al instalar docker me sale esto Docker Engine stopped

Mi aporte: cuando ejecutaba el comando > docker-compose build

me salia un error que decia:

Could not fetch URL https://pypi.org/simple/contourpy/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/contourpy/ (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1002)'))) - skipping
#0 8.393 ERROR: Could not find a version that satisfies the requirement contourpy==1.1.1 (from versions: none)

y lo soluciona agregando en la linea del RUN lo siguiente:

FROM python:3.11.4

WORKDIR /app
COPY requirements.txt /app/requirements.txt

RUN pip install --disable-pip-version-check --no-cache-dir --trusted-host pypi.org --trusted-host=files.pythonhosted.org --upgrade -r /app/requirements.txt
COPY . /app/

CMD bash -c "while true; do sleep 1; done"

De esta forma, se salta la verificación de certificados para pip dentro de tu Dockerfile.

Creo que debo hacer un curso solo para Docker

Ahora sí pude entender el concepto y alcance de Docker a través de código,algo real, muy buena clase

Para instalar Docker en Ubuntu, puedes seguir estos pasos:

  1. Actualiza los paquetes del sistema:

    sudo apt update
    
  2. Instala los paquetes necesarios para permitir que apt utilice repositorios a través de HTTPS:

    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    
  3. Agrega la clave GPG oficial de Docker:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
  4. Agrega el repositorio de Docker al sistema:

    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
  5. Actualiza los paquetes nuevamente:

    sudo apt update
    
  6. Instala Docker Engine:

    sudo apt install docker-ce docker-ce-cli containerd.io
    
  7. Verifica que Docker se haya instalado correctamente ejecutando el siguiente comando para obtener la versión:

    docker version
    
  8. Por defecto, para ejecutar comandos de Docker, es necesario tener permisos de superusuario (sudo). Si deseas ejecutar comandos de Docker sin sudo, puedes agregar tu usuario al grupo “docker”:

    sudo usermod -aG docker $USER
    
  9. Cierra la sesión actual y vuelve a iniciarla para que los cambios surtan efecto.

Una vez completados estos pasos, deberías tener Docker instalado en tu sistema Ubuntu. Ahora puedes comenzar a utilizar Docker para crear y administrar contenedores.

Le copio al profe, tome bien nota para el día que lo use 😶‍🌫️ por el momento con conda. Pero ahora ya vi el alcance tan brutal que tiene Docker.

Tuve los siguientes errores:

  1. ERROR: Could not find a version that satisfies the requirement pkg_resources==0.0.0 (from versions: none)
  2. Pip install: no such option: –no-cache-dir

Los solucione , borrando del requeriments.txt la siguiente linea:
pkg_resources==0.0.0
Entiendo que este paquete funciona es para ambientes virtuales
El otro error fue borrando lo del cache: quizas la versión de pipe3 que tengo instalada no admite este flag.
RUN pip install --upgrade -r /app/requeriments.txt

CREAR UN DOCKER CON EL COMANDO= **sudo docker compose build **
ACTIVAR EL DOCKER CON EL COMANDO = sudo docker compose up -d
PARA COMPROBAR QUE EL COMANDO ESTA ACTIVO = docker-compose ps
PARA ENTRAR EL DOCKER AGREGAR EL COMANDO = sudo docker compose exec app-csv bash
PARA SALIR DE DOCKER ESCRIBIMOS = **exit **
Para bajar un Docker se escribe el comando= sudo docker-compose down

Al correr el comando docker-compose build me salió el error de “Unsupported config option for services”. Según encontré en Stack Overflow, la solución más común a esto es añadir la siguiente línea al inicio del archivo docker-compose.yaml

version: "3"

sauce: https://stackoverflow.com/questions/36724948/docker-compose-unsupported-config-option-for-services-service-web

docker no configuration file provided >

Si les sale un error de: docker no configuration file provided al ejecutar docker compese build. Solo no olviden que deben ubicarse en la carpeta donde está el archivo Dockerfile.

En mi caso tuve un problema marcado con la flecha roja.
para ello tuve que ejecutar el comando “docker pull python:3.10” primero para que lo instale la libreria que necesito y luego seguir con el comando que indica el profesor.

Para los que les sale este error al ejecutar sudo docker-compose build:

ERROR [4/5] RUN pip install --no-cache-dir -r /app/requirements.txt
ERROR: Could not find a version that satisfies the requirement
ERROR: No matching distribution found for command-not-found==0.3
WARNING: You are using pip version 22.0.4; however, version 23.1.2 is available.

Primero se debe activar el ambiente virtual, actualizar pip, actualizar el archivo requirements.txt, desactivar el ambiente virtual y volver a correr el comando sudo docker-compose build

Solución: 
python3 -m venv env 
python3 -m pip install --upgrade pip 
pip freeze > requirements.txt 
deactivate 
sudo docker-compose build

error de autorizacion

si sale este error

error corregido

pueden usar siempre sudo y funciona para todo lo que se llame docker

Al usar docker-compose build, obtenía un mensaje de error diciendo que el comando no se había encontrado. El problema era que Docker solo trabaja con WSL versión 2 y la que yo tenía era la 1. Con ayuda de la documentación ofrecida en la página de Docker, pude realizar exitosamente la conversión; luego de eso ya no hubo problemas con el comando 😄

Sino le responde “docker-compose build”, cierren la terminal y vuelvanla a abrir

Las pocas veces que he usado docker no ha sido asi de sencillo, ja

Gente bonita.

Si les aparece el error de permission denied (en WSL) sigan este tutorial. Esta super rápido y si funciona.

Saludos

https://www.youtube.com/watch?v=XfZvKLNXC9M&t=16s

Dockerizar aplicaciones es hermoso, muchas gracias Nicolas!

Que clase magistral…en estos minutos entendí más que en cualquier otro curso de Docker

Mi error y solución en Windows:

failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount20087919/dockerfile: no such file or directory

Para solucionarlo, ejecute en consola los siguientes comandos

export DOCKER_BUILDKIT=0
export COMPOSE_DOCKER_CLI_BUILD=0

Necesitamos un curso de docker por Nico!

Gran modulo el de docker, excelente explicación Nicolás

Si no le funciona, revisen que la identacion del archivo yml este correcta

El archivo Dockerfile se puede escribir también con un solo COPY, así:

FROM  python:3.8

WORKDIR /app
COPY . /app

RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt

CMD bash -c "while true; do sleep 1; done"

Recuerden revisar que tengan espacio en el disco duro al realizar este proceso, sino genera error.

Adicionalmente, si les falla la creacion del docker por algun motivo, pueden ejecutar:

rm  ~/.docker/config.json 

entonces docker-compose up your-services debería funcionar

A mi me funciono ya que me generaba errores raros por un error en la primera ejecucion del dockers.

Esto desde WSL

tambíén pueden trabajar con podman, mas liviano