ungdev / etuutt-api

Users, classes, assos : An awesome API to rule them all
MIT License
2 stars 2 forks source link

:whale: (Setup) Working on Docker for project setup and documen for n… #39

Closed ThomasRitaine closed 1 year ago

ThomasRitaine commented 1 year ago

Description

Salut les petits potes 👋 J'ai bossé un peu sur l'installation du projet orienté pour des nouveaux devs, parce que c'était pas pratique d'installer 25 outils différents pour faire tourner le projet sur sa machine.\ Je vous laisse essayer et me dire ce que vous en pensez !

Checklist

Test

Implementation

Tools

Documentation

ThomasRitaine commented 1 year ago

Merci pour ton travail !

Mais de rien, c'est toujours un plaisir de donner de mon temps en me formant sur de nouvelles techno !

Est-ce qu'une structure avec une surchage de dev et une de prod comme celle-ci pourrait t'aider ? https://git.ivannlaruelle.fr/larueli/symfony-base avec un docker-compose.yml de base, un de dev (avec uniquement les éléments de dev), un de prod. Dev docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d et prod docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d Après c'est peut être trop compliqué ?

Je trouve que l'organisation que tu proposes est plus claire et meilleure que avec le docker-compose.override.yml :

Ici, le docker-compose.yml ne change pas, et le docker-compose.override.yml devient docker-compose.dev.yml. Peux-tu m'indiquer ce qu'il faudrait mettre dans le docker-compose.prod.yml ?

Dans tous les cas peux-tu expliquer tes modifications ? Tu as supprimé le Dockerfile : comment build l'image pour la prod ? Ou alors j'ai rien capté ?

J'ai supprimé le Dockerfile car il servait juste à importer l'image larueli/php-symfony-base-image:8.0 sans la modifier. On perdait donc l'intérêt du Dockerfile car il possible d'avoir le même résultat en spécifiant l'image à importer directement dans le docker-compose.yml. De plus, le docker-compose.yml et le docker-compose.override.yml importaient une image différente, ce qui aurait causé des différences de comportement entre le dev et la prod.

larueli commented 1 year ago

Dans le docker-compose.prod.yml il faudrait mettre ça

version: '3'

services:
  application:
    restart: always

  database:
    restart: always

indiquant simplement de redémarrer systématiquement les container de l'app et de la db

Attention, le Dockerfile importe l'image et la modifie d'une certaine manière. Si tu vas voir le code source de celle-ci, tu verras des instructions ONBUILD : celles-ci permettent d'effectuer les actions listées après import de l'image (en gros quand tu as plein d'app qui se buildent de la même manière, cela permet d'uniformiser). https://docs.docker.com/engine/reference/builder/#onbuild

Essaye de remettre le Dockerfile comme avant et essaye de builder avec docker build -t ungdev/etuutt-api . et tu verras !