Cette PR fait deux choses dans deux commits différents dans le but de faire marcher le setup du projet en local en suivant le README, à savoir:
Copier les variables d'environnement
cp .env.example .env
Lancer les containers
docker-compose up
Lorsque j'ai essayé de faire ça j'ai eu deux problèmes.
Le premier était que par défaut l'image docker postgres:13 va créer une base de donnée qui a le même nom que POSTGRES_USER si POSTGRES_DB n'est pas spécifié. Ici en l'occurence la base de donnée est créée avec le nom postgres.
POSTGRES_DB
This optional environment variable can be used to define a different name for the default database that is created when the image is first started. If it is not specified, then the value of POSTGRES_USER will be used.
Par contre le container web s'attend à une base de donnée qui s'apelle cnr..
Il y a deux manière de corriger ce problème:
Soit on modifie le nom qu'attend le container web
Soit on modifie le nom de la base de donnée
Dans cette PR j'ai choisi la solution 2. parce que ça permet d'expliciter le nom de la DB via une configuration claire, au lieu de se baser sur un comportement de fallback (l'utilisation du POSTGRES_USER si POSTGRES_DB n'existe pas). Explicit is better than implicit.
Le deuxième était l'exception suivante:
File "/app/cnr/settings.py", line 278, in <module>
SEND_IN_BLUE_LIST = int(os.getenv("SEND_IN_BLUE_LIST", 1))
ValueError: invalid literal for int() with base 10: ''
Dans .env.example on définit SEND_IN_BLUE_LIST=, ce qui set la variable à une chaine de caractère vide (''). Ca raise donc une ValueError lorsqu'on essaye de la caster en entier à cette ligne là.
Là encore on a deux manière de corriger ça:
On définit une valeur par défaut valide dans .env.example (1 par exemple)
On ne définit pas la variable dans .env.example et on se base sur la valeur par défaut définie dans settings.py (1)
Dans cette PR j'ai choisir la solution 2. parce que settings.py définit déjà une valeur par défaut, donc pour un premier lancement de l'application en local je pense que ça suffit.
Après avoir résolu ces deux problème j'arrive bien à lancer l'application en local :+1:
Cette PR fait deux choses dans deux commits différents dans le but de faire marcher le setup du projet en local en suivant le README, à savoir:
Lorsque j'ai essayé de faire ça j'ai eu deux problèmes.
Le premier était que par défaut l'image docker
postgres:13
va créer une base de donnée qui a le même nom quePOSTGRES_USER
siPOSTGRES_DB
n'est pas spécifié. Ici en l'occurence la base de donnée est créée avec le nompostgres
.Source: https://hub.docker.com/_/postgres
Par contre le container
web
s'attend à une base de donnée qui s'apellecnr
..Il y a deux manière de corriger ce problème:
Dans cette PR j'ai choisi la solution 2. parce que ça permet d'expliciter le nom de la DB via une configuration claire, au lieu de se baser sur un comportement de fallback (l'utilisation du POSTGRES_USER si POSTGRES_DB n'existe pas). Explicit is better than implicit.
Le deuxième était l'exception suivante:
Dans
.env.example
on définitSEND_IN_BLUE_LIST=
, ce qui set la variable à une chaine de caractère vide (''
). Ca raise donc une ValueError lorsqu'on essaye de la caster en entier à cette ligne là.Là encore on a deux manière de corriger ça:
1
par exemple)1
)Dans cette PR j'ai choisir la solution 2. parce que settings.py définit déjà une valeur par défaut, donc pour un premier lancement de l'application en local je pense que ça suffit.
Après avoir résolu ces deux problème j'arrive bien à lancer l'application en local :+1: