Plusieurs choses qui ne sont pas "état de l'art" dans ton DockerFile (après lecture en diagonale)
USER: ton container run en root, c'est mal pour la sécurité ! Il faut créer un user, lui donner les droits sur les bons dossiers
VOLUMES: tout ce qui est data / qui bouge doit être dans un volume, et tu peux le déclarer dans ton DockerFile. Si ton volume doit avoir déjà du contenu, il faut le créer avant de déclarer le chemin volume (le système de fichier de docker est très pourri en terme de perf). Donc ici il te faut au moins un volume pour la BDD, un autre pour les médias (pour les statics pas besoin, sauf si tu prévois de les faire servir par un autre container nginx)
RUN: (même si je comprends que là c'est en mode test rapide)
je pense que c'est pas vraiment bien d'avoir deux commandes en parallèle dans un container. Tu fais plutôt un script qui devient l'entrypoint et qui permet de lancer chaque commande (ok c'est acceptable en première instance)
ce n'est pas top non plus de lancer le migrate ou le populate au démarrage, c'est des choses qui sont faite normalement à la livraison, pas au lancement.
# état de l'art
Posté par Alex G. . En réponse au journal Ça passe crème. Évalué à 2.
Hello,
Plusieurs choses qui ne sont pas "état de l'art" dans ton DockerFile (après lecture en diagonale)
USER: ton container run en
root, c'est mal pour la sécurité ! Il faut créer un user, lui donner les droits sur les bons dossiersVOLUMES: tout ce qui est data / qui bouge doit être dans un volume, et tu peux le déclarer dans ton DockerFile. Si ton volume doit avoir déjà du contenu, il faut le créer avant de déclarer le chemin volume (le système de fichier de docker est très pourri en terme de perf). Donc ici il te faut au moins un volume pour la BDD, un autre pour les médias (pour les statics pas besoin, sauf si tu prévois de les faire servir par un autre container nginx)
RUN: (même si je comprends que là c'est en mode test rapide)
je pense que c'est pas vraiment bien d'avoir deux commandes en parallèle dans un container. Tu fais plutôt un script qui devient l'entrypoint et qui permet de lancer chaque commande (ok c'est acceptable en première instance)
ce n'est pas top non plus de lancer le migrate ou le populate au démarrage, c'est des choses qui sont faite normalement à la livraison, pas au lancement.