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

Langage PHP Discussion :

Utiliser Docker pour développer avec le mkframework [Tutoriel]


Sujet :

Langage PHP

  1. #1
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut Utiliser Docker pour développer avec le mkframework
    Certains d'entre vous connaissent déjà le célèbre gestionnaire de conteneur Docker qui permet de faire tourner des services sans nécessiter le lancement d'une machine virtuelle complète.

    Dans ce tutoriel, vous allez apprendre à programmer en PHP avec Docker et le framework PHP .

    Dans un premier temps, nous installerons le gestionnaire de conteneur Docker et verrons ses commandes principales, puis nous installerons mkframework dans un conteneur.


    Lien du tutoriel : http://imikado.developpez.com/tutori...ionAvecDocker/


    Forum Docker
    Forum du mkramework


    Les meilleurs cours et tutoriels pour apprendre à programmer en PHP
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  2. #2
    Membre habitué
    Avatar de Rikles
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Points : 184
    Points
    184
    Par défaut
    Salut,
    Super ton tutoriel, facile à suivre et "concret", c'est cool !

    J'aimerai juste faire une petite remarque :
    C'est bien de prévenir que toutes les modifications apportée au container sont perdu quand on l'éteint, ça mets en garde l'utilisateur mais ce n'est pas juste. Si on redémarre le container (et non si on relance une nouvelle fois un conteneur à partir de l'image), les modifications sont toujours là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    docker run -it debian:jessie /bin/bash
        echo "test" > /tmp/test
        exit
     
    docker ps -a
        CONTAINER ID        IMAGE                                          COMMAND                  CREATED             STATUS                          PORTS                                NAMES
        3dedd278996e        debian:jessie                                  "/bin/bash"              3 minutes ago       Exited (0) About a minute ago                                        clever_joliot
     
    docker start clever_joliot
    docker exec -it clever_joliot /bin/bash
        cat /tmp/test
            test
    Et c'est bien pour ça que la commande docker commit fonctionne et est utile
    En revanche, lorsqu'on supprime le container (docker rm <containerId>), là oui, les données sont perdue !

    Après ce n'est peut-être pas dans le niveau visé par ce tutoriel, mais ce que j'ai dis juste avant est à nuancer car il y a 3 "types de stockage" en fait :
    1. celui de base sur le principe de "l'oignon" : on perd les données si on supprime le container
    2. le volume "interne" : on perd les données si on supprime le volume (docker rm -v <containerId> ou docker volume rm <volumeId>)
    3. le volume mappé (sur un répertoire de l'hôte ou sur un autre container) : on perd les données en supprimant la source où est mappé le volume


    Merci en tout cas d'avoir fait ce tutoriel et du temps que tu y as consacré

  3. #3
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Merci pour l'information, en effet, le tutoriel ici est vraiment orienté: "developper avec docker", il n'est pas "poussé" sur l'utilisation du gestionnaire de conteneur

    Par-contre, dans votre exemple, quand on éteins/redemarre le pc, on perd les données, non ? à moins que docker mette en "pause" à l'extinction..
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  4. #4
    Membre habitué
    Avatar de Rikles
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Points : 184
    Points
    184
    Par défaut
    Désolé, encore quelques petites choses...

    Dans certaines commandes, tu mets "identifiantImage" au lieu de "identifiantContainer" (commandes stop, pause, exec, commit). Ces commandes travaillent au niveau container et pas image.

    Tu lances une commande Docker (avec un "D" majuscule au lieu d'une minuscule) dans le dernier bloc de code.

    Personnellement, je préfère séparer les différents services d'une application dans des containers séparés (ici, apache et mysql) et j'utilise docker-compose pour les faire collaborer et les lancer.
    J'y trouve pas mal d'avantages, comme, par exemple :
    • si tu travailles à plusieurs sur un projet, tu peux créer la base de données et faire un export de l'image (commit + save) pour la donner aux autres dev sans embarquer apache et tout le reste...
    • tu peux faire évoluer les images indépendamment les unes des autres (si seul le schéma de la DB évolue, pas besoins de repackager le tout, seulement l'image de la DB)

  5. #5
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Pour imageId / imageContainer + la majuscule à Docker, je vais corriger (mais il faudra attendre pour la correction en ligne qui prend un peu de temps et rend l'article indisponible pendant un instant)

    Pour le multi-container, là encore, comme je le disais précédemment: ce n'est pas un article sur docker, mais un article pour coder avec docker, on utilise ici le gestionnaire de container comme un "outil" simple à mettre en place pour un développeur

    Donc j'ai présenté le plus simple

    L'utilisation de "docker compose" rajouterai de la complexité à l'article


    note: je vais ajouter une "note" pour le signaler tout de même
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  6. #6
    Membre habitué
    Avatar de Rikles
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par imikado Voir le message
    Merci pour l'information, en effet, le tutoriel ici est vraiment orienté: "developper avec docker", il n'est pas "poussé" sur l'utilisation du gestionnaire de conteneur
    C'est bien ce dont je me doutais Donc je pense qu'effectivement, il n'est pas nécessaire de parler des différents "types de stockage".
    Mais je pense qu'une petite précision sur le fait que les données du container ne sont supprimées qu'à la suppression du container et non à l'arrêt peut rassurer les utilisateurs
    PS : Du coup, ma remarque sur docker-compose dans mon deuxième post est un peu too much aussi...

    Par-contre, dans votre exemple, quand on éteins/redemarre le pc, on perd les données, non ? à moins que docker mette en "pause" à l'extinction..
    Normalement, on ne perd pas les modifications à l’arrêt du système (si on l'arrête proprement) car à l'extinction du démon docker, les containers sont stoppés.

  7. #7
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Pour l'histoire de la "persistence" des données:

    Dans mon tuto j'indique que les paquets installés seront perdus, ça c'est le cas,non ?

    j'ai déja eu le cas la semaine dernière où j'installai vim pour faire 2-3 modif en "live", et je les perdais à chaque fois
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  8. #8
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Bonjour

    Merci pour le tuto, c'est concrêt et facile à suivre, très utile

    J'ai une erreur à la partie des vhosts. J'ai créé le mien ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <VirtualHost *:80>
    	ServerName docker.dev
        DocumentRoot /var/www/docker/monAppli/public
        <Directory /var/www/html/data/genere/monAppli/public>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/docker.dev.error.log
    	CustomLog ${APACHE_LOG_DIR}/docker.dev.access.log combined
    </VirtualHost>
    Avec la modif du /etc/hosts et le reload d'Apache qui vont bien.

    Mais quand je vais sur docker.dev, j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [Wed Jan 18 17:31:58.989229 2017] [:error] [pid 21795] [client 127.0.0.1:40356] PHP Warning:  include(../../../../lib/framework//class_root.php): failed to open stream: No such file or directory in /var/www/docker/monAppli/public/index.php on line 23
    [Wed Jan 18 17:31:58.989323 2017] [:error] [pid 21795] [client 127.0.0.1:40356] PHP Warning:  include(): Failed opening '../../../../lib/framework//class_root.php' for inclusion (include_path='.:/usr/share/php') in /var/www/docker/monAppli/public/index.php on line 23
    [Wed Jan 18 17:31:58.989623 2017] [:error] [pid 21795] [client 127.0.0.1:40356] PHP Fatal error:  Uncaught Error: Class '_root' not found in /var/www/docker/monAppli/plugin/plugin_autoload.php:8\nStack trace:\n#0 [internal function]: plugin_autoload::autoload('_root')\n#1 /var/www/docker/monAppli/public/index.php(36): spl_autoload_call('_root')\n#2 {main}\n  thrown in /var/www/docker/monAppli/plugin/plugin_autoload.php on line 8
    Je précise qu'à l'adresse http://localhost:81/data/genere/monAppli/public/, j'ai bien le rendu du MKFramework, donc le docker est bien configuré et tourne bien...

    Ca ressemble à des erreurs du framework, non à des erreurs de ma config... Je suis censé faire quoi ? (je ne connais pas ce framework)

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/12/2016, 16h05
  2. [3D] Aide pour développer avec delta3D
    Par astragoth dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 06/02/2006, 13h56
  3. Environnement de travail pour développer avec ASP
    Par requiemforadream dans le forum ASP
    Réponses: 6
    Dernier message: 01/04/2005, 14h10

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