Ce serait une bonne docker webdev flux de travail?
J'ai un pressentiment que docker pourrait grandement améliorer mon webdev flux de travail - mais je n'ai pas vraiment réussi à envelopper ma tête autour de la façon d'aborder un projet, l'ajout de support de la pile.
Le logiciel de base de pile devrait ressembler à ceci:
Logiciel
-
Docker image(s) personnalisé, pile LAMP
- Apache avec plusieurs modules
- MYSQL
- PHP
- Certains CMS, par exemple Silverstripe
-
GIT
Flux de travail
Je pourrais imaginer le flux de travail à ressembler à quelque chose comme ce qui suit:
Développement
- Écrire un
Dockerfile
qui définit une LAMPE-conteneur rencontre les exigences énoncées ci-dessus- REQ: L'appareil doit démarrer apache/mysql droite après le démarrage
- Construire l'image docker
- Copier les fichiers requis pour exécuter le CMS par ex.
~/dev/cmsdir
- Mettre
~/dev/cmsdir/
sous contrôle de version
- Mettre
- Exécuter le conteneur docker, et en quelque sorte le mont
~/dev/cmsdir
à/var/www/
sur le conteneur - Remplir la base de données
- Faire du travail en
/dev/cmsdir/
- Commettre & fermez le panneau contenant
Déploiement
- Configurer l'hôte distant (par exemple, avec ansible)
- Pousser conteneur de l'image à l'hôte distant
- Chercher
cmsdir
-projet via git - Exécuter le conteneur docker, tirez dans la base de données et le mont
cmsdir
en/var/www
Maintenant, cela ressemble tout à fait joli sur le papier, MAIS je ne suis pas certain que ce soit la bonne approche.
Questions:
-
Tout en développant localement, comment pourrais-je obtenir la base de données de persister après un redémarrage de l'instance de conteneur? Ou aurais-je besoin pour exécuter sql dump chaque fois avant de tourner vers le bas du conteneur?
-
Que je dois le récipient séparé les instances de la base de données et le serveur apache? Ou bien serait-elle suffisante pour avoir un seul conteneur au-dessus de cas d'utilisation?
-
Si vous utilisez des contenants séparés pour la base de données et le serveur, comment pourrais-je automatiser les tourner en haut et en bas en même temps?
-
Comment pourrais-je monter
/dev/cmsdir/
dans les conteneurs/var/www/
-répertoire? Dois-je utiliser les données des volumes de pour cela? -
Ai-je raté un écueils? Tout ce qui pourrait être simplifié?
- Cette question semble être intéressante pour quelques personnes. Quelqu'un semble avoir écrit un article sur le blog de la série sur le sujet récemment. Car il n'est pas fini pour l'instant, je vais poster le lien dans ce commentaire: project-webdev.blogspot.de/2015/05/...
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin de la base de données de la persistance indepent de votre CMS conteneur, vous pouvez utiliser un récipient pour MySQL et un conteneur pour votre CMS. Dans de tels cas, vous pouvez avoir votre MySQL contenant toujours en cours d'exécution et vous pouvez redéployer votre CMS aussi souvent que vous le souhaitez de façon indépendante.
Pour le développement - l'autre option est de la carte de données mysql répertoires à partir de votre hôte ou votre machine de développement à l'aide de volumes de données. De cette façon, vous pouvez gérer les fichiers de données pour mysql (dans le menu fixe) à l'aide de git (de l'hôte) et "reload" de l'état initial quand vous le voulez (avant le démarrage de mysql contenant).
Oui, je pense que vous devriez avoir un récipient séparé pour la db.
Je suis juste en utilisant la base de script:
Oui, vous pouvez utiliser les données des volumes de v commutateur. Je voudrais utiliser ce par le développement. Vous pouvez l'utiliser en lecture seule de montage, de sorte qu'aucune modification ne sera apportée à ce répertoire si vous le souhaitez (votre application doit stocker des données quelque part d'autre de toute façon).
De toute façon, pour le déploiement final, je voudrais construire et de l'image à l'aide de dockerfile avec
ADD /home/user/dev/cmsdir /var/www/cmsdir
Je ne sais pas 🙂
Vous souhaitez utiliser docker-composer. Suivez le tutoriel ici. Très simple. Semble de cocher toutes les cases.
https://docs.docker.com/compose/
Je comprends ce post est de plus d'un an à ce moment, mais j'ai récemment demandé à moi-même beaucoup de questions similaires et ont plusieurs réponses à vos questions.
Vous pouvez configurer une base de données MySQL docker instance et qui ont données persistent sur un apatride conteneur de données, aka le conteneur de données n'a pas besoin d'être en cours d'exécution
Oui je recommande d'avoir une instance distincte de votre serveur web et base de données. C'est le pouvoir de Docker.
Découvrez ce repo j'ai été la construction. Fondamentalement, c'est aussi simple que
make build
&make run
et vous pouvez disposer d'un serveur web et une base de données contenant exécuté localement.Vous utilisez le
-v
argument lors de l'exécution du conteneur pour la première fois, ce sera un lien d'un dossier spécifique sur le conteneur de l'hôte exécutant le conteneur.Je pense que vos idées sont grande et il est actuellement possible de réaliser tout ce que vous demandez.
Voici une des solutions clés en main la réalisation de tous les besoins que vous avez énumérés.
J'ai mis en place un outil facile à utiliser docker composer de l'installation qui doit correspondre à vos processus de développement des exigences.
https://github.com/ehyland/docker-silverstripe-dev
Principales Caractéristiques
HHVM
+NGINX
ouApache2
+PHP5
La README.md doit être assez clair pour vous obtenir a commencé.