Bienvenida

1

Todo lo que aprenderás sobre Django

Cimientos

2

Arquitectura de una aplicación

3

The Twelve-Factor App

4

Codebase: Settings modular

5

Codebase: Dependencias y archivos de docker

6

Codebase: Docker

7

Setups alternativos

Modelos

8

Herencia de modelos

9

Proxy models

10

App de usuarios

11

Organizando modelos en un paquete de Django

12

Creando el modelo de perfil de usuario

13

Solución del reto: arreglando la migración de users a user

14

Aplicación y modelo de círculos

15

Migraciones y admin de círculos

Introducción a Django REST Framework

16

Aprende cómo construir tu propio API con Django Rest Framework

17

Vistas, URLs y Parsers de DRF

18

Serializers

19

Buenas prácticas para el diseño de un API REST

20

Request, response, renderers y parsers

Real DRF

21

Autenticación y tipos de autenticación

22

APIView

23

Creando el token de autorización

24

User sign up

25

Limitar login a usuarios con cuenta verificada

26

Configurar envío de email

27

Instalar PyJWT y generar tokens

28

Verificar cuenta usando JWT

29

Actualizar modelo de circle (membership)

30

Crear CircleViewSet

31

Añadiendo autorización y paginación

32

Creación de circulos

33

Update de círculo, custom permissions y DRF Mixins

34

Migración de vistas de usuarios a ViewSets

35

Detalle de usuario

36

Update profile data

37

List members - Recursos anidado

38

Retrieve destroy member

39

Modelo de invitaciones y manager

40

Obtener invitaciones de un miembro

41

Unirse a grupo

42

Filtrado

43

App de rides y modelos

44

Implementar la publicación de un ride

45

Validación de campos de un serializer

46

Listado de rides

47

Editar un ride

48

Unirse a viaje

49

Terminar viaje

50

Calificar viaje

Tareas asíncronas

51

¿Qué es Celery?

52

Creando tarea asíncrona

53

Creando tarea periódica

Testing

54

Python unittest y Django TestCase

55

DRF APITestCase

Django Admin

56

Admin actions: Modificar datos de un query

57

Admin actions: Regresando una respuesta HTTP

Deployment

58

Instalación de la aplicación

59

Configuración del dominio en Mailgun y del Bucket en Amazon S3

60

Configuración final de Docker Container usando Supervisor

61

Tutorial de despliegue de la aplicación

62

Futuros pasos y cierre del curso

No tienes acceso a esta clase

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

Adquiere por un año todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/año

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

0D
6H
13M
37S

Codebase: Docker

6/62
Recursos

Aportes 89

Preguntas 28

Ordenar por:

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

o inicia sesión.

Para los que tengan problemas con celery, tornado, redis, cosas como ‘Éste módulo no se encuentra en tornado’, etc, etc.

Dejen las dependencias de Celery de la siguiente forma

# Celery
redis>=3.2.0
django-redis==4.10.0
celery==4.2.1
tornado>=5.0.0,<6.0.0
flower==0.9.2

Tendrán que ejecutar otra vez “docker-compose build”

Para poder correr el proyecto y crear un superuser en django tuve que, ademas de actualizar #Celery como menciona @emmanuelO , actulizar la vesion de “argon2-cffi” en base.txt de requirements:

# Passwords security
argon2-cffi==20.1.0

# Celery
redis>=3.2.0
django-redis==4.10.0
celery==4.2.1
tornado>=5.0.0,<6.0.0
flower==0.9.2


Espero les sirva, Saludos!

<h1>Dependencias actualizadas a Septiembre del 2020</h1>

Actualice las dependencias a los últimos release, al correr el stack todo funcionó. Si hay algo incompatible o diferente trataré de solucionarlo y compartir en la siguientes clases.

requirements/base.txt

# Base
pytz==2020.1
python-slugify==4.0.1
Pillow==7.2.0
psycopg2==2.8.5 --no-binary psycopg2

# Django
Django==3.1.1

# Environment
django-environ==0.4.5

# Django REST Framework
djangorestframework==3.11.1
django-filter==2.3.0

# JWT
pyjwt==1.7.1

# Passwords security
argon2-cffi==20.1.0

# Static files
whitenoise==5.2.0

# Celery
tornado>=6.0.4
redis>=3.5.3
django-redis==4.12.1
celery==4.4.7
flower==0.9.2

requirements/local.txt

-r ./base.txt

# Debugging
ipdb==0.13.3

# Tools
django-extensions==3.0.8

# Testing
mypy==0.782
pytest==6.0.1
pytest-sugar==0.9.4
pytest-django==3.9.0
factory-boy==3.0.1

# Code quality
flake8==3.8.3

requirements/production.txt

# PRECAUTION: avoid production dependencies that aren't in development

-r ./base.txt

gunicorn==20.0.4

# Static files
django-storages[boto3]==1.10

# Email
django-anymail[mailgun]==7.2.1

Reemplazar la versión de python en dockerfile de local y prod
FROM python:3.6-alpine
por
FROM python:3.8-alpine

Para los que tengan problema al momento de ejecutar el Celery
modifica el archivo base.txt la parte de Celery de la siguiente manera:

# Celery
redis>=3.2.0
django-redis==4.10.0
celery==4.2.1
tornado>=5.0.0,<6.0.0
flower==0.9.2

Luego de esta modificación ejecutar:

  1. export COMPOSE_FILE=local.yml
  2. docker-compose up --build

Después de semanas de estar atorado aquí tengo la solución definitiva para que corra el script 😃
Todo gracias a mi amigo Jorge A. Pérez G.

Nota: Esto funciona el día 13 de noviembre del 2020:

  1. Solución:

    • Una vez que hayas hecho fork al repositorio y luego lo hayas clonado a una carpeta en tu computadora con:
    git clone git@github.com:tuPerfilDeGitHub/cride-platzi.git 
    
    • Fíjate en que no hayas hecho ningún cambio en los archivos, si lo hiciste tendrás varias opciones:

    Opción propuesta 1: hacer un commit con :

    git commit -am "El mensaje de tu commit"
    

    Opción propuesta 2: Borrar el repositorio y volver a clonarlo con el fin de que no tenga modificaciones.

    • Cambiate de rama a 6/Typo-models con:
    git checkout 6/Typo-models   
    
    • Abre la carpeta donde clonaste el repositorio, luego la carpeta cride-platzi, después la carpeta requirements en esta encontrarás un archivo llamado: *base.txt, abre el archivo con cualquier editor de código (visual studio code, atom, sublime text, etc.) y modifica los siguientes parámetros (tornado no existe, deberás escribirlo de cero):
    # Passwords security
    argon2-cffi==20.1.0
    
    # Celery
    redis>=3.2.0
    django-redis==4.10.0
    celery==4.2.1
    tornado>=5.0.0,<6.0.0
    flower==0.9.2
    
    • Guarda el archivo y después corre lo mismo que el profesor en este video:
    docker-compose -f local.yml build       
    

    y luego:

    docker-compose -f local.yml up      
    

Y listo, todo debería correr 😃

  • Si quieres ver las demás ramas solo debes hacer:

    git branch -r   
    

(Para salir de la visualización de las ramas solo oprime la tecla “Q”)
Podrás notar que hay una rama por cada video del curso, aún no avanzo en este pero podría asegurar que si algo falla más adelante podríamos hacer lo mismo y cambiarnos a la rama correspondiente.

😃

He vuelto a ver este curso después de 5 meses y siguen existiendo problemas con los requirementes, ¿esto sucede en todos los desarrollos? definitivamente es un dolor de cabeza -.-

me surgieron tantos problemas al querer levantar el entorno que me desmotivaron a continuar el curso.

En Windows, para poner la variable de entorno COMPOSE_FILE, podemos crear un archivo en la raíz de nuestro proyecto (donde se encuentra local.yml) llamado .env y dentro declarar:

COMPOSE_FILE=local.yml
# Para construir las imagenes
$ docker-compose -f local.yml build

# Para correr el stack
$ docker-compose -f local.yml up

# Para ver el estado de los procesos de Docker
$ docker-compose -f local.yml ps 

# Para detener la ejecución
$ docker-compose -f local.yml down

Para no tener que colocar “-f local.yml” en cada comando, se puede crear una variable de entorno de esta forma:

$ export COMPOSE_FILE=local.yml

Hola Cabres!, no se si les a pasado el siguiente error con Celery, intente las soluciones que estaban en el grupo, pero no me funco

celeryworker_1  |   File "/usr/local/lib/python3.6/site-packages/django_filters/__init__.py", line 4, in <module>
celeryworker_1  |     from .filterset import FilterSet
celeryworker_1  |   File "/usr/local/lib/python3.6/site-packages/django_filters/filterset.py", line 13, in <module>
celeryworker_1  |     from .conf import settings
celeryworker_1  |   File "/usr/local/lib/python3.6/site-packages/django_filters/conf.py", line 5, in <module>
celeryworker_1  |     from .utils import deprecate
celeryworker_1  |   File "/usr/local/lib/python3.6/site-packages/django_filters/utils.py", line 10, in <module>
celeryworker_1  |     from django.db.models.fields import FieldDoesNotExist
celeryworker_1  | ImportError: cannot import name 'FieldDoesNotExist'
cride-jp_celeryworker_1 exited with code 1

         Name                        Command               State     Ports  
----------------------------------------------------------------------------
cride-jp_celerybeat_1     /entrypoint /start-celerybeat    Exit 1           
cride-jp_celeryworker_1   /entrypoint /start-celeryw ...   Exit 1           
cride-jp_django_1         /entrypoint /start               Exit 1           
cride-jp_flower_1         /entrypoint /start-flower        Exit 1           
cride-jp_postgres_1       docker-entrypoint.sh postgres    Up       5432/tcp
cride-jp_redis_1          docker-entrypoint.sh redis ...   Up       6379/tcp

Hola, les comparto el siguiente script, espara facilitar la ejecución repetitiva de los comandos para leventar los servicios de este curso, espero que lo disfruten. Saludos.

https://gist.github.com/quattrococodrilo/b85da7d5715f1139af8fd7497c06accf

#!/bin/bash
# Author: Luis Fernando Cruz Carrillo
# Email: [email protected]
# This file must be in docker-compose's file directory, and need
# have execution allows. It work fine in linux systems, but if you
# taste it in emulated Ubuntu terminal in Windows, please share me
# your results. Enjoy!

options_start(){
    # Options menu

    echo -e "---------------------------"
    echo -e "--------QUICK START--------"
    echo -e "---------------------------"
    echo "Run a docker-compose file by the \"easy way\"."
    echo "Sintax: command [option] [suboption]"
    echo "Options -up / -down"
    echo "Suboptions:"
    echo -e "\t -rs Run service separately: first, you need run command with option -up in one terminal, and then run command with -up -rs options in another terminal."
    echo -e "\t -a Run in stand alone mode: first, it run the services in silence mode, and then run separately one of them, by example, django."
}

if [ ! $1 ]; then
    options_start
    exit 1
fi

prepare_environ () {
    # Set a docker-compose file as a COMPOSE_FILE variable.

    dir_files=($(ls *.yml))

    echo "Select compose file:"

    for (( df=0; df < ${#dir_files[@]}; df++ ))
    do
        echo "$((df + 1)). ${dir_files[$df]}"
    done

    read -p "Option [number]: " option

    option=$(( option - 1 ))

    path_to_file=$(pwd)

    composer_file=${dir_files[option]}

    export COMPOSE_FILE="$path_to_file/$composer_file"
}


rs_option () {
    # This function allows run a service in stand alone mode.

    docker-compose ps
    read -p "Enter service name: " name
    if [ $name ]; then
        read -p "Enter app name: " app
        if [ $app ]; then
            docker rm -f $name
            docker-compose run --rm --service-ports $app
        fi
    else
        options_start
        exit 1
    fi
}


add_exception_ignore () {
    # Add program name as exception in .dockerignore.

    program_name="executor.sh"

    if [ -f .dockerignore ]; then
        file=.dockerignore
        exist_exception=0
        while IFS= read line
        do
            if [ "$line" = "$program_name" ]; then
                exist_exception=1
            fi
        done <"$file"
    fi

    if [ $exist_exception -eq 0 ]; then
        echo "$program_name" >> $file
    fi
}


if [ $1 = "--help" ]; then
    options_start

elif [ $1 = "-up" ]; then
    add_exception_ignore
    prepare_environ

    if [ $2 = "-rs" ]; then
        rs_option
    elif [ $2 = "-a" ]; then
        docker-compose up -d
        rs_option
    else
        docker-compose up
    fi


elif [ $1 = "-down" ]; then
    if [ ! $COMPOSE_FILE ]; then
        prepare_environ
    fi
    docker-compose down
fi

Para los que tengan problemas con la biblioteca de argon, modifiquen el que existe en requirements/base.txt y pongan esto
argon2-cffi==20.1.0.

También deberían cambiar las dependencias de celery, Celery quedaría así:
redis>=3.2.0
django-redis4.10.0
celery
4.2.1
tornado>=5.0.0,<6.0.0
flower==0.9.2

Con eso dejó de darme problemas

No puedo ejecutar el archivo ya que me sale el siguiente error:

ImportError: cannot import name ‘python_2_unicode_compatible’

Alguno tiene el mismo problema?

docker es muy molesto, no he podido avanzar por andar solucionando error tras error 😢

Para los que estan teniendo problemas con los requirements al día de hoy, lo que hice para que funcionara fue quitarle las versiones a todos los paquetes en base.txt; con eso me funcionó.

Tenia el siguiente error al crear el usuario:

ValueError: Couldn't load 'Argon2PasswordHasher' algorithm library: No module named 'argon2._ffi

Logre solucionarlo modificando el archivo requirements/base.txt

# Passwords security
argon2-cffi==20.1.0

# Celery
redis>=3.2.0
django-redis==4.10.0

Espero le sirva a alguien

no puedo correr el proyecto, clone el repo de pablo, y este está mas construido que el de la clase hasta tiene apps adcionales, cuando corro el comando para correr el proyecto, sale este error

File "/usr/local/lib/python3.6/site-packages/rest_framework/authtoken/models.py", line 6, in <module>
celeryworker_1  |     from django.utils.encoding import python_2_unicode_compatible
celeryworker_1  | ImportError: cannot import name 'python_2_unicode_compatible'

donde esta el codigo inicial para ir a la par con las clases?
que debo hacer para seguir la clase con normalidad?

Para los novatos como yo, Docker es como un dolor de cabeza, pero me parece que es fundamental aprender a utilizarlo. Animo Muchachos/.

Para aquellos que tuvieron errores con celery y flower a la hora de encender el contenedor de docker, hice estos cambios en el base de requirements:

# Celery
redis>=3.2.0
django-redis==4.10.0
celery==4.2.1
flower==0.9.2
tornado>=4.2.0,<6.0.0```

Hola, no estoy pudiendo levantar el celerybeat_1

Después de hacer el up de la app, ejecuto el comando:

docker-compose -f local.yml ps

Y el único que no levanta es CeleryBeat.

 Name          Command               State            Ports
------------------------------------------------
cride-platzi_celerybeat_1     /entrypoint /start-celerybeat    Exit 1```

La applicación de django en localhost:8000/admin no se puede acceder tampoco, por lo que estoy trabado acá.
Acá está el log

Alguno sabe que puede ser?

SOLUCIÓN DE ERRORES DE INSTALACIÓN

Actualizado en 13 de enero de 2022. Con python 3.8.10 (viene por default en ubuntu).
En primer lugar en cride-platzi/compose/local/django/Dockerfile hacer:

FROM python:3.8.5-alpine

ENV PYTHONUNBUFFERED 1

Despues, pegar esto en cride-platzi/requirements/base.txt:

# Base
pytz==2018.7
python-slugify==1.2.6
Pillow==5.3.0
psycopg2==2.8.4 --no-binary psycopg2    ## Cambie la version de psycopg2
typed-ast==1.4.1       ## Añadí typed-ast ya que es requerido por psycopg2

# Django
django==2.0.10

# Environment
django-environ==0.4.5

# Django REST Framework
djangorestframework==3.9.1
django-filter==2.4.0

# JWT
pyjwt==1.7.1

# Passwords security
argon2-cffi==21.3.0

# Static files
whitenoise==4.1.2

# Celery
redis>=2.10.6, < 3
django-redis==4.10.0
celery==4.2.1
flower==0.9.2
tornado==4.2

Usar,

docker-compose -f local.yml build

Cada vez que se actualicen valores del docker para instalar las actualizaciones.

Espero de corazón que les sirva. A APRENDER!

¿Tendría algo de malo actualizar Django a una versión mas reciente?

Comandos Docker $ docker container $ docker images $ docker volume $ docker network ls rm prune -a -q

Hola, estoy teniendo un problema al intentar crear un super usuario. Cuando levanto el docker temporal para lanzar el comando de createsuperuser
Este es mi comando:
sudo docker-compose -f local.yml run --rm django python manage.py createsuperuser

Esto es lo que me sale como error:
ModuleNotFoundError: No module named 'argon2._ffi'

ValueError: Couldn't load 'Argon2PasswordHasher' algorithm library: No module named 'argon2._ffi'

Que puede estar pasando?

Esto se muestra en mi consola luego de “docker-compose up”

cride-platzi-1-codebase_celerybeat_1 exited with code 1
cride-platzi-1-codebase_flower_1 exited with code 1
cride-platzi-1-codebase_celeryworker_1 exited with code 1

Escribo el codigo “docker-compose ps” para verificar los procesos y esto se muestra en consola:

                 Name                               Command               State            Ports         
---------------------------------------------------------------------------------------------------------
cride-platzi-1-codebase_celerybeat_1     /entrypoint /start-celerybeat    Exit 1                         
cride-platzi-1-codebase_celeryworker_1   /entrypoint /start-celeryw ...   Exit 1                         
cride-platzi-1-codebase_django_1         /entrypoint /start               Up       0.0.0.0:8000->8000/tcp
cride-platzi-1-codebase_flower_1         /entrypoint /start-flower        Exit 1                         
cride-platzi-1-codebase_postgres_1       docker-entrypoint.sh postgres    Up       5432/tcp              
cride-platzi-1-codebase_redis_1          docker-entrypoint.sh redis ...   Up       6379/tcp  

Alguna idea de porque estos procesos están detenidos?

17 de diciembre funcionó con:

Django

django>=2.0.10, < 3.1.0

Celery

redis>=3.2.0
django-redis>=4.10.0
celery>=4.2.1, <5.0.0
tornado>=5.0.0,<6.0.0
flower>=0.9.2

En mi caso Docker corre con la direccion de IP 192.168.99.100. Al acceder al localhost:8000 me rechazaba la conexion. Tuve que colocar la ip de Docker en los Allowed Host para poder acceder.

No he podido avanzar, me dice que no encuentra el manage.py (estoy en windows con Docker Toolbox)

Una vez clonado el proyecto, por si quieren ir al codebase con

git checkout origin/1/Codebase

es suficiente

Para windows el equivalente a export es set:

export COMPOSE_FILE=local.yml
set COMPOSE_FILE=local.yml

Comandos para correr el proyecto con Docker

1.- Generamos las imágenes en docker

sudo docker-compose -f local.yml build

2.- Levantamos las imágenes

sudo docker-compose -f local.yml up

3.- Visualizar las imágenes que están corriendo con docker

sudo docker-compose -f local.yml ps

pero puedes utilizar el siguiente comando para ver mas información:

sudo docker ps -a

Es muy largo correo todos los comandos pero podemos hacer lo siguiente:

export COMPOSE_FILE=local.yml

Esto nos permitirá ejecutar estos comandos dentro de la sesión de la terminal haciendo referencia al archivo local.yml

sudo docker_compose build
sudo docker_compose up
sudo docker_compose ps
sudo docker_compose down

Comandos de Administración con Docker

Para correr comandos de django puede usarse:

sudo docker-compose run --rm django COMMAND

Para usuarios de vscode: luego de solucionar las dependencias con problemas de versión (bien explicado más abajo por ej. por @Emmanuel0), a mí se me hizo muy útil instalar el plugin “remote - containers”, de vscode, que me ‘devuelve’ el linteo del código, autocompletar y sintaxis.

.devcontainer.json quedó así:

{
    "name": "django configuration",
    "dockerComposeFile": [
        "../local.yml"
    ],
    "service": "django",
    "forwardPorts": [8000],
    "workspaceFolder": "/app",
}

En container, sólo instalé los plugins (vscode) de ‘Django’, ‘Python’ y ‘Pylance’.

Hola. Por que no mejor dejar el archivo de docker compose con el nombre por defecto (docker-compose.yml), y asi evitar tener que exportar la variable de entorno y/o tener que usar -f local.yml?

Ejecutando desde GitBash en Windows, al querer crear un usuario, me salió el error

_ Superuser creation skipped due to not running in a TTY. You can run manage.py createsuperuser in your project to create one manually._

Lo solucione agregando winpty al principio del comando

winpty docker-compose run --rm django python manage.py createsuperuser

para el moneto en elk que estoy, me funciono de la siguiente manera en base.txt:


# Celery
redis>=3.2.0, < 3.2.1
django-redis==4.10.0
celery==4.2.1
flower==0.9.2
tornado>=4.2.0,<6.0.0
nbconvert==5.3.1

no he confirmado si nbconvert es nesesario forzarlo todavia.

No puedo entrar al admin. Me aparece el siguiente error:

ProgrammingError at /admin/
relation "auth_user" does not exist
LINE 1: ...user"."is_active", "auth_user"."date_joined" FROM "auth_user...

Alguine sabe como resolverlo?

Al correr

$ docker-compose ps

tengo como repsuesta

           Name                          Command               State            Ports
----------------------------------------------------------------------------------------------
cride-platzi_celerybeat_1     /entrypoint /start-celerybeat    Exit 1
cride-platzi_celeryworker_1   /entrypoint /start-celeryw ...   Exit 1
cride-platzi_django_1         /entrypoint /start               Up       0.0.0.0:8000->8000/tcp
cride-platzi_flower_1         /entrypoint /start-flower        Exit 1
cride-platzi_postgres_1       docker-entrypoint.sh postgres    Up       5432/tcp
cride-platzi_redis_1          docker-entrypoint.sh redis ...   Up       6379/tcp

Pero al intentar eliminar el servicio cride-platzi_django_1

$ docker-compose rm -f cride-platzi_django_1 

Recibo:

ERROR: No such service: cride-platzi_django_1

A alguien más le ha pasado esto?

La única forma en la que logre borrarlo fue usando:

$ docker rm -f <CONTAINER_ID>

La verdad es que todo este proceso da muchos problemas en Windows, hice lo mismo en windows y en linux y me funciono a la primera en linux, solo hagan lo que roberto martin dice y listo

Cuando inicio sesión tengo este error como lo puedo solucionar

En Windows, me surgió este error:

python: can't open file '.\manage.py': [Errno 2] No such file or directory

al correr:

docker-compose -f .\local.yml run --rm django python .\manage.py createsuperuser

Después de horas intentando varias cosas sin tener éxito, lo que solucionó mi problema fue solo quitar el “./”, quedando asi:

docker-compose -f .\local.yml run --rm django python manage.py createsuperuser

Y todo belén mijo, ya pude crear el super usuario

buenas tardes, actualice las dependencias de celery a sus ultimas versiones:

<h1>Celery</h1>

tornado>=6.0.4
redis>=3.5.3
django-redis4.12.1
celery
4.4.7
flower==0.9.5
sigo sin poder levantar los servicios, alguna ayuda por favor !!!

Si al correr docker-compose -f local.yml up llegan a tener un error tipo:

ERROR: for flower  Cannot start service flower: driver failed programming external connectivity on endpoint

Solo intenten reiniciar Docker y listo.

Habilitar debugger

No logro levantar el celery y el flower no dejan de mandar errores
(Linux Mint)

Para finales de Septiembre es necesario hacer las actualizaciones a continuacion en:
requirements ->base.txt

# Passwords security
argon2-cffi==20.1.0

# Static files
whitenoise==4.1.2

# Celery
redis>=3.2.0
django-redis==4.10.0
celery==4.2.1
tornado>=5.0.0,<6.0.0
flower==0.9.2

Para el que todavia lo intente, esto funciono a la fecha:

# Base
pytz==2018.7
python-slugify==1.2.6
Pillow==5.3.0
psycopg2==2.8.4 --no-binary psycopg2    ## Cambie la version de psycopg2
typed-ast<1.2.0      ## Añadí typed-ast ya que es requerido por psycopg2

# Django
Django>=2.2

# Environment
django-environ==0.4.5

# Django REST Framework
djangorestframework==3.9.1
django-filter==2.4.0

# JWT
pyjwt==1.7.1

# Passwords security
argon2-cffi==21.3.0

# Static files
whitenoise==4.1.2

# Celery
redis>=3.2.0, < 3.2.1
django-redis==4.10.0
celery==4.2.1
flower==0.9.2
tornado==4.2
nbconvert==5.3.1

Creo que las imagenes de python y postgres ya las tenia desde antes crear las imagenes para el proyecto

**Otros Comandos Docker **

  • $ docker container

  • $ docker images

  • $ docker volume

  • $ docker network

  • ls. listar

  • rm remover

  • prune quitar los que no estamos usando

  • -a mostrar todos

  • -q solo los id

  • – help ayuda de los comandos

😃

Al ejecutar los contenedores se me presentaron los siguientes errores:
Error 1:
AttributeError: module ‘tornado web’ has no attribute 'asynchronous’
Se solucionó agregando
tornado==4.2

Error 2:
Redis transport requires redis-py versions 3.2.0 or later. You have 2.10.6

Se soluciona como indica el comentario con modificar en base.txt:
redis>=3.2.0, < 3.2.1

al final esta sección en el archivo base.txt me quedó así:

Celery

redis>=3.2.0, < 3.2.1
django-redis4.10.0
celery
4.2.1
flower0.9.2
tornado
4.2

En log logs hay algunos mensajes que entiendo posiblemente mas adelante se tenga que ir afinando.

Hola gente, tengo un problema al ejecutar

docker-compose run --rm django python manage.py createsuperuser

Me sale el siguiente error:

django.db.utils.ProgrammingError: relation "auth_user" does not exist
LINE 1: ...user"."is_active", "auth_user"."date_joined" FROM "auth_user...

Cuando hago el docker-compose up me salen estos errores con celery y flower

Incluso si entro a la terminal de alpine con el comando docker-compose exec dajngo sh y ejecuta al menos para ver la version (celery --version) sale ese chorro de errores, he consultado y nada

Uso docker con docker toolbox for windows

Crear imagenes docker

Correr el stack de docker

Pro Tip $ export COMPOSE_FILE=local.yml $ docker-compose build $ docker-compose up $ docker-compose ps $ docker-compose down

Comandos administrativos $ docker-compose run --rm django COMMAND ejemplo: $ docker-compose run --rm django python manage.py createsuperuser

Tengo estos errores al querer correr el comando de docker:
docker-compose -f local.yml up

Es el siguiente:
ERROR: for django Cannot create container for service django: b’Drive has not been shared’
ERROR: Encountered errors while bringing up the project.

Ya coloque la variable en el archivo .env y de todos modos sigue persistiendo, alguien puede ayudarme??

hola recien estoy viendo docker y tengo una duda , cuando utilizas el comando docker-compose -f local.yml build … descarga los requirement.txt ?

recomendado el docker-compose que maneja pycharm unos cuantos clicks y todos nuestros servicios arriba

Si deseo colocar la fecha de nacimiento de un usuario cual sería el metodo que debo de usar??

tengo un problema y es que al usar docker-compose up me sale este mensaje

ModuleNotFoundError: No module named 'cride'```

Buenas, estoy usando DockerToolbox en Windows y al usar el comando: docker-compose -f local.yml build, no hay problema, pero luego al usar:

docker-compose -f local.yml up, arroja entre otros errores: python: can’t open file ‘manage.py’: [Errno 2] No such file or directory.

Se ruega ayuda, Gracias!!!

crear una variable de entrono para no tener que escribir local.yml primera linea de la imagen comandos útiles desde la segunda linea

comandos para habilitar debugger

Habilitar debugger Django en Docker Container $ docker-compose up $ docker-compose ps $ docker rm -f <ID> $docker-compose run --rm --service_ports django

si no puedes levantar las imágenes con el comando docker-compose -f local.yml up , quizá es por que docker requiere que le des un disco disponible en cual trabajar(c:\ o d:\ o, etc) para agregar un disco disponible debes ir a settings de docker/shared Drives y marcar el disco en donde esta tu proyecto, esto te abrirá otra ventana donde debes colocar tu contraseña de inicio de sesión de tu computadora, en el caso no tengas una contraseña debes crearte una para que funcione

Les recomiendo usar PyCharm tiene integración con Docker y con un solo botón pueden poner a correr todos sus contenedores y ver sus logs y todo, tambiém pueden desde el mismo IDE ver las base de datos y gestionar git; Un IDE completo!

me esta gustando bastante este curso…

a ese están yo le agregaría pgadmin 4 para revisar la base de datos

El export funciona solo dentro de la instancia de la consola o se agrega al zshcr?

Tengo errores después de ejecutar e UP de docker compose

como puedo solucionarlo, estoy corriendo en un mac?

celerybeat_1 | ImportError: cannot import name ‘python_2_unicode_compatible’

Hice todos los pasos como en los videos y al iniciar en localhost:8000/admin con mi superusuario, me sale esto.

Le doy para atras y ya entra al admin de django.

Por qué da el error?

Hola, estoy teniendo problemas al realizar el docker-compose -f local.yml up. Obtengo los siguientes errores:
django_1 | python: can’t open file ‘manage.py’: [Errno 2] No such file or directory
flower_1 | ModuleNotFoundError: No module named 'cride’
celerybeat_1 | ModuleNotFoundError: No module named ‘cride’

Estoy utilizando Windows 10 Home y Docker Toolbox.

Gracias.

Si a alguien que esta en** windows** le sale un error al hacer docker-compose -f local.yml up, donde diga: ‘unshared drives’ o algo asi(error muy comun), debe ir a settings en docker, ir a shared drives y marcar el disco local C para darle una unidad de trabajo a Docker(les pedira una cuenta), si al hacer check se quita, lo que deben hacer es lo siguiente(despues de varias horas de intentos me funciono):

1-Ir a settings/accounts, crear una cuenta y la cambian a administrador
2-Hacer ctrl+alt+supr, eligen la opcion cambiar de cuenta y se van a la cuenta que crearon
3-Lo que deben hacer es ir al home directory, ejemplo: C:\Usuarios\me, aca es donde te van a negar el acceso y tienes que habilitarlo, haces click en continuar
4-Una vez que ya tengas acceso al home con la nueva cuenta, haz otra vez ctrl+alt+supr y regresa a tu cuenta propia
5- Ahora ve a settings en docker, share drives y haz check en C, ingresa los datos de la cuenta que creaste y listo, problema resulto
6-Ahora si podras hacer docker-compose -f local.yml up sin error alguno
La solucion la encontre en este link:
https://www.mattwoodward.com/2019/05/09/docker-on-windows-10-sharing-a-drive-when-logging-in-with-a-microsoft-account/?unapproved=4947&moderation-hash=eea4ea5668585ef7a5ecae1c9275e640#comment-4947

Como configuro el container de postgres con postgis ?

Fedora 32 me estuvo dando muchos problemas pero al final mejor me cambie a Ubuntu y aunque tuve problemas con la version de django-rest-framework ya pude correr el proyecto.

Si tienes error En Windows al correr la solucion es loguearte en docker y asignar una carpeta en filesharing

@pablotrinidad todavia falta para el deploy pero se va a deployar con docker? vamos a tener varias instancias? por ej una para workers otra para django y otra para flower ?

Para hacerlo aun mas resumido, se puede crear un alias en el bash e incluir los comandos de up/dow/ps

alias dc="sudo docker-compose -f local.yml"

de manera que la proxima vez que quieras levantar la aplicacion solo escibiras

dc up

ERROR: for cride-platzi-1-codebase_celeryworker_1 Cannot create container for service celeryworker: status code not OK but 500: {“Message”:“Unhandled exception: Filesharing has been cancelled”,“StackTrace”:" en Docker.ApiServices.Mounting.FileSharing.<DoShareAsync>d__6.MoveNext() en C:\workspaces\stable-2.3.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\Mounting\FileSharing.cs:lĂ­nea 0\r\n— Fin del seguimiento de la pila de la ubicaciĂłn anterior donde se produjo
la excepciĂłn —\r\n en System.Runtime.ExceptionServices.ExceptionDispatchInfo.Thr

Digno de que trucaso el tip de compose_file

He bajado el proyecto de github pero cuando trato de correr el docker-compose -f local.yml up me aparece el error de:

Waiting for PostgreSQL to become available…

y ningun otro servicio se levanta.

Alguien tiene la solucion que me pueda ayudar?

Les dejo un dato para el sgte error:

 docker-compose run --rm --service-ports django
ERROR: 
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml

Solución

docker-compose -f local.yml run --rm --service-ports django
Starting cride-jp_postgres_1 ... done
PostgreSQL is available
Operations to perform:
  Apply all migrations: admin, auth, authtoken, circles, contenttypes, rides, sessions, users
Running migrations:
  No migrations to apply.
  Your models have changes that are not yet reflected in a migration, and so won't be applied.
  Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
Watching for file changes with StatReloader

Para clonar el código en la branch Codebase

git clone --branch=1/Codebase https://github.com/pablotrinidad/cride-platzi.git
docker-compose run --rm django python manage.py createsuperuser

Este comando me genero problemas al usarlo , no me dejo crear el super admin

¿Todo mundo tiene ese problema con las imagenes de celery/flower?

           Name                          Command               State     Ports
--------------------------------------------------------------------------------
cride-platzi_celerybeat_1     /entrypoint /start-celerybeat    Exit 1
cride-platzi_celeryworker_1   /entrypoint /start-celeryw ...   Exit 1
cride-platzi_django_1         /entrypoint /start               Exit 1
cride-platzi_flower_1         /entrypoint /start-flower        Exit 1
cride-platzi_postgres_1       docker-entrypoint.sh postgres    Up       5432/tcp
cride-platzi_redis_1          docker-entrypoint.sh redis ...   Up       6379/tcp

Necesito ayuda, quiero hacer una migracion a un proyecto ya existente a esta estructura de carpetas, pero no encuentro en que lugar del dockerfille del entorno local, se copian los archivos desde el exterior hacia el contenedor, asi que cuando estoy corriendo el contenedor, corre todo bien, pero no tengo los archivos de mi app

tambien tuve que cambiar el método de Password Security 😦

# Passwords security
argon2-cffi==20.1.0```

En mi caso tuve que actualizar las parte de Celery incluyendo la versión de flower para que levantara

# Celery
redis>=3.2.0
django-redis==4.10.0
celery==4.2.1
tornado>=5.0.0,<6.0.0
flower==0.9.5