IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Docker Discussion :

Architecture Docker pour un site web


Sujet :

Docker

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Novembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Novembre 2022
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Architecture Docker pour un site web
    bonjour à tous et à toutes,

    Je fais appel à vos lumieres concernant docker.

    J'ai fait développer une marketplace de mise en relation entre particulier. Cette marketplace se divise en 3 parties :

    Une partie backend (nodejs + mongodb).

    Et 2 applications web à déployer : frontend (react) et site d'administration.

    Ayant très peu de connaissance en architecture et souhaitant dockeriser la marketplace pour faciliter le déploiement et le developpement, quelle serait la meilleur architecture dockers pour ce genre de projet à votre avis ? Dois je dockeriser toute l'application dans le meme docker ou créer plusieurs docker séparemment ? Que dois je dockeriser ? Enfin voila, je me pose pas mal de question et je sollicite votre expértise.

    Je vous remercie par avance.

  2. #2
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 990
    Points
    2 990
    Par défaut
    Bonjour

    Et donc trois containers différents ;-) Surtout bien garder en tête le concept de l'isolation. Toujours bien isoler chaque application...

    Tu vas orchestrer le tout avec des fichiers docker-compose.yml.

    Perso, j'ai un tout gros projet avec plusieurs dossiers sur mon disque; un dossier pour le backend, un autre dossier pour un second backend (imaginons ton admin ici), un troisième dossier pour le frontend, etc.

    L'important ce que chaque fichier docker-compose.yml (tu en auras donc trois) définissent un network qui sera strictement le même. C'est ultra important car cela va dire à Docker : mes trois applications vont pouvoir se parler. Mon frontend va pouvoir faire une requête API p.ex. sur mon backend. Crucial d'avoir le même network pour l'ensemble.

    C'est une excellente idée de dockeriser le tout toutefois gaffe au temps que cela va prendre : c'est ultra gourmand en compétences, il faut comprendre si pas maitriser tant de concepts comme la notion de containers, d'isolation, savoir programmer des fichiers Dockerfile, gérer les appels du front vers le back, causer le linuxien, faire que tout le monde puisse se parler; ... Si tu débutes, déjà félicitations et ... courage. Tu as une montagne à gravir.

    Une fois en haut; le monde est merveilleux (Docker est une merveille) mais attends-toi à des prises de tête, des cheveux gris et à devoir éplucher tout le net pour trouver une réponse à tes problèmes.

    (désolé de te refroidir ;-))
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Novembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Novembre 2022
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Tout d'abord, je te remercie d'avoir eu la gentilesse de répondre à ce topic .

    Merci pour ta vision architecturale, j'ai eu un autre retour qui me conseille l'architecture suivante :

    - Une image pour l'application NodeJS
    - Une image pour MongoDB (utiliser l'image officielle, à priori suffisante...)
    - Une image pour le front-end public (une image basée sur le Nginx officiel)
    - Une image pour le front-end d’administration (contrairement au front-end public qui est développé en react, le front-end administration est développé via angular)

    Qu'en penses tu ? ne serait-il pas plus préférable d'isoler la base de donnée de l'application nodeJs ? (dans l'idée de créer des scripts de sauvegarde de la base de donnée part exemple).

    En lisant ton message, je n'avais pas conscience de la difficulté de docker, j'imaginais cela plus facile que ta description

    Néanmoins, je n'aurais eu que deux choix. Soit déployer mon application sur un serveur ovh (public cloud par exemple) et me limiter en agilité (lors des phases préprod/prod, test, mais également de compatibilité etc), soit parier directement sur docker pour me faciliter les contraintes liés aux déploiements et me concentrer principalement sur la partie dev.

    Une fois l'architecture docker mise en place et le site déployé, la partie administration est lourde ? Il n'y a pratiquement plus d'administration si je déployer mon site directement sur un serveur OVH par exemple.

    En te remerciant par avance,

  4. #4
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 990
    Points
    2 990
    Par défaut
    Bonjour

    Citation Envoyé par valoo7 Voir le message
    Merci pour ta vision architecturale, j'ai eu un autre retour qui me conseille l'architecture suivante :

    - Une image pour l'application NodeJS
    - Une image pour MongoDB (utiliser l'image officielle, à priori suffisante...)
    - Une image pour le front-end public (une image basée sur le Nginx officiel)
    - Une image pour le front-end d’administration (contrairement au front-end public qui est développé en react, le front-end administration est développé via angular)

    Qu'en penses tu ?
    Je ne connais pas précisément ton application mais nous sommes alignés; je ne disais pas autre chose en parlant d'isolation.

    Pour ma backend (php), j'ai jusqu'à 7 services différents : une image PHP, une image Apache, une image Redis, une image Redis Management, une image Postgres, une image Pgadmin (gestion de la DB), ... Isolation au maximum; cela te simplifiera la vie pour la gestion mais aussi p.ex. mettre telle application sur tel serveur; je n'y vois que des avantages.

    Citation Envoyé par valoo7 Voir le message
    ne serait-il pas plus préférable d'isoler la base de donnée de l'application nodeJs ? (dans l'idée de créer des scripts de sauvegarde de la base de donnée part exemple).
    Si je m'en réfère à mon cas (PHP); oui, j'ai une isolation pour la DB (en fait j'ai deux DBs et donc deux services distinct).

    Citation Envoyé par valoo7 Voir le message
    En lisant ton message, je n'avais pas conscience de la difficulté de docker, j'imaginais cela plus facile que ta description
    Sauf si tu es déjà expert; perso, cela a été des dizaines jours de développement, configuration, optimisation, etc. Tu peux écrire ton Dockerfile d'une traite ou en multi-stage (évidemment meilleur); tu peux partir sur des grosses images ou sur des images optimisées où tu commenceras à installer et configurer ce dont tu as besoin, tu peux avoir une image pour la PROD ou une image pour DEV ou encore un seul Dockerfile avec un paramètre d'entrée pour le target et, grâce au multistage, cibler les portions du Dockerfile à compiler. Il y a encore toute la partie sécurité de tes images et l'optimisation de ton environnement.

    Tu peux y aller au fûr et à mesure bien sûr. Ne pas trop faire attention à l'optimisation ni à la sécurité (mais un jour tu y viendras aussi).

    Il y a aussi la partie réseau : tu auras probablement plusieurs docker-compose.yml (tiens, tu auras aussi à gérer les docker-compose.override.yml pour ta machine de DEV) et il faut donc programmer un réseau interne pour que chaque application réussisse à se parler.

    Citation Envoyé par valoo7 Voir le message
    Une fois l'architecture docker mise en place et le site déployé, la partie administration est lourde ? Il n'y a pratiquement plus d'administration si je déployer mon site directement sur un serveur OVH par exemple.
    Pas plus lourde qu'une version non dockerisée; je dirais même que c'est exactement ici qu'on gagne en puissance. Quand ton site est déployable grâce à Docker, c'est donc que tu as déjà tout configuré, installer les modules qui vont bien, la sécurité adhoc, ... La gestion des sites http n'est en rien impactée mais la gestion du serveur en est terriblement facilitée. Tu déploies tes scripts Docker et hop, ça tourne. Et si tu changes de serveur, hop ça tourne toujours (tu n'as pas à te farcir une seconde configuration). En outre, c'est probablement plus simple aussi pour ajouter des services. Pour un site en PHP, tu peux installer p.ex. un service Redis vraiment facilement grâce à Docker et configurer ton application pour l'utiliser.

    Mon message : Docker est génial; je l'utilise maintenant pour tout (même pour jouer avec Python, Java que je ne connais pas du tout; plein de scripts en tout genre) ... Docker est génial. Dès lors que tu souhaites dockeriser une application, oui, cela demande un temps plus que certain. C'est vraiment très gros consommateur (il faut savoir jusqu'où tu iras dans le codage). Cela en vaut la peine mais ce n'est pas à faire si tu n'as que xx jours devant toi.

    Bonne journée.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

Discussions similaires

  1. Quelle architecture web choisir pour mon site web ?
    Par dhay06 dans le forum Débuter
    Réponses: 3
    Dernier message: 29/07/2011, 16h47
  2. Répertoire de session défirent pour chaque site web.
    Par The Tiger Man dans le forum Apache
    Réponses: 2
    Dernier message: 19/01/2006, 16h48
  3. [Architecture/strategie] conception de site web dynamique
    Par epoz dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 28/11/2005, 12h11
  4. recherche pour presentation site web sur PC et app. mobile
    Par Marc_3 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/04/2005, 15h33
  5. hote virtuel pour autre site web
    Par vedder dans le forum Apache
    Réponses: 8
    Dernier message: 27/07/2004, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo