Comment déployer Wordpress avec Shipyard sur Ubuntu 14.04

introduction

Shipyard est un outil de gestion pour les serveurs Docker. Docker est un logiciel de pointe utilisé pour la conteneurisation. Shipyard vous permet de voir quels conteneurs chacun de vos serveurs est en cours d’exécution, afin de démarrer ou d’arrêter des conteneurs existants ou d’en créer de nouveaux.

Une fois que vous avez configuré Shipyard sur votre serveur, vous pouvez y accéder via une interface graphique, une interface de ligne de commande ou une API. Chantier naval ne dispose pas de certaines fonctionnalités avancées des autres outils Docker orchestration, mais il est très simple de le configurer, gratuitement utiliser, et vous pouvez gérer et héberger vous-même.

Ce tutoriel explique comment installer Shipyard, le connecter à vos serveurs Docker et l’utiliser pour créer et lancer de nouveaux conteneurs. À la fin, Shipyard devrait fonctionner sur votre serveur pour gérer vos hôtes Docker.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

  • Une goutte Ubuntu 14.04 avec l’image Docker 1.5.0.

Vous pouvez trouver l’option Image Docker 1.5.0 sur la page de création de gouttelettes, dans l’onglet * Applications * sous * Sélectionner une image *. Vous pouvez également installer Docker sur un Droplet existant en suivant la cet tutoriel.

  • Remarque *: le paquetage + docker.io + du référentiel standard pour Ubuntu 14.04 est très ancien (version 0.9.1). Pour utiliser Shipyard, vous devez installer la version la plus récente de Docker à l’aide d’une des méthodes répertoriées ci-dessus.

Étape 1 - Installation du chantier naval

Dans cette étape, nous allons installer le chantier naval. Les commandes de ce didacticiel nécessiteront toutes des privilèges root. Il sera donc plus simple de simplement vous connecter à votre Droplet en tant qu’utilisateur root. Si vous êtes connecté en tant qu’utilisateur non-root, vous pouvez exécuter + sudo su pour passer à l’utilisateur root.

Lorsque Docker est en cours d’exécution, il est assez facile d’installer le chantier naval car il est livré sous forme d’images Docker. Tout ce que vous avez à faire est d’extraire les images du registre Docker et d’exécuter les conteneurs nécessaires. Nous allons d’abord créer un data volume container pour stocker les données de la base de données de Shipyard. Ce conteneur ne fait rien par lui-même; c’est une étiquette pratique pour la localisation de toutes les données du chantier naval.

docker create --name shipyard-rethinkdb-data shipyard/rethinkdb

Maintenant que le conteneur de volume de données est créé, nous pouvons lancer le serveur de base de données pour Shipyard et les lier entre eux.

docker run -it -d --name shipyard-rethinkdb --restart=always --volumes-from shipyard-rethinkdb-data -p 127.0.0.1:49153:8080 -p 127.0.0.1:49154:28015 -p 127.0.0.1:29015:29015 shipyard/rethinkdb

Ceci lance un conteneur exécutant RethinkDB, une base de données distribuée, et s’assure qu’il est uniquement accessible localement sur le serveur lui-même. Si vous essayez de visiter + http: //: 49153 + dans votre navigateur, vous ne devriez rien voir.

Maintenant que la base de données de Shipyard est opérationnelle, nous pouvons exécuter Shipyard lui-même en lançant un autre conteneur et en le reliant à la base de données.

docker run -it -p 8080:8080 -d --restart=always --name shipyard --link shipyard-rethinkdb:rethinkdb shipyard/shipyard

Nous pouvons maintenant accéder à notre instance Shipyard en cours d’exécution en utilisant le port + 8080 +.

Étape 2 - Accéder au chantier naval

Maintenant que le chantier naval est en marche, nous devons y accéder. Le chantier naval est accessible via l’interface graphique, l’interface de ligne de commande (CLI) ou l’API. Nous allons commencer par accéder à la CLI.

Accéder au chantier naval à l’aide de la CLI

Nous pouvons avoir accès à la CLI du chantier naval en exécutant un autre conteneur.

docker run -ti --rm shipyard/shipyard-cli

L’indicateur + -ti + vérifie que le conteneur est interactif et l’indicateur + - rm + en fait un conteneur jetable, ce qui signifie qu’il sera automatiquement supprimé une fois que nous aurons terminé.

Vous devriez maintenant voir l’invite CLI Chantier naval, qui ressemble à ceci: + Chantier naval cli> +. Pour obtenir une liste des commandes disponibles, vous pouvez entrer + aide du chantier naval +.

Cette invite de commande n’a pas encore été connectée à l’instance de chantier naval que nous avons configurée à l’étape 1, connectons-la d’abord:

shipyard login

Il vous demandera une URL. Entrez + http: //: 8080 +. Ensuite, vous serez invité à entrer un nom d’utilisateur et un mot de passe. Le nom d’utilisateur et le mot de passe sont définis par défaut. entrez + admin + pour le nom d’utilisateur et + shipyard + pour le mot de passe. Vous serez alors renvoyé à l’invite du chantier naval.

Vous êtes maintenant connecté à votre instance Shipyard en tant que * admin *. Laisser le mot de passe par défaut en place représente un risque énorme pour la sécurité, changeons-le donc.

shipyard change-password

Vous devrez choisir et confirmer votre nouveau mot de passe. Assurez-vous que votre nouveau mot de passe est sécurisé et que vous pourrez vous en souvenir. Vous pouvez maintenant appuyer sur * CTRL + D * pour quitter le CLI du chantier naval.

Étant donné que la ligne de commande de chantier naval doit être connectée à votre instance de chantier naval à chaque fois, vous pouvez l’exécuter sur tout système capable d’exécuter des conteneurs Docker et le connecter à l’instance de chantier naval s’exécutant sur votre serveur.

Accéder au chantier naval en utilisant l’interface graphique

Nous examinerons ensuite l’interface graphique de Shipyard. Pour y accéder, ouvrez + http: //: 8080 + dans votre navigateur. Cela devrait vous montrer l’écran de connexion. Utilisez le nom d’utilisateur + admin + et le nouveau mot de passe que vous avez choisi.

Une fois que vous êtes connecté, Shipyard affiche l’onglet * Moteurs * et vous avertit qu’il n’y a pas encore de moteurs dans votre groupe de chantiers navals. Un engine est un hôte Docker capable d’exécuter des conteneurs. Ici, nous allons ajouter chaque serveur Docker que vous souhaitez gérer avec Shipyard.

Étape 3 - Ajout d’un moteur

Le Droplet sur lequel nous venons de déployer Shipyard est également un hôte Docker. Nous pourrons donc le gérer avec Shipyard. Avant de pouvoir le faire; Cependant, nous devrons ajouter le serveur à Shipyard en tant que moteur.

Par défaut, Docker est configuré pour écouter le socket Unix + / var / run / docker.sock +, mais ce socket n’est pas accessible à partir de notre instance Shipyard. Nous devrons configurer Docker pour qu’il écoute également les demandes sur un port. Pour ce faire, éditez le fichier de configuration de Docker à l’aide de votre éditeur de texte préféré. (Ici, nous utilisons + nano +.)

nano /etc/default/docker

A la fin, ajoutez cette ligne:

DOCKER_OPTS="-H tcp://:4243 -H unix:///var/run/docker.sock"

Cela garantira que Docker accepte les connexions sur le port + 4243 +, mais uniquement à partir de votre serveur lui-même. Maintenant, redémarrez Docker pour charger la nouvelle configuration:

service docker restart

Cela permettra également de redémarrer vos conteneurs de chantier naval. Depuis que nous avons utilisé les conteneurs avec + - restart = always +, ils devraient remonter automatiquement. Vous pouvez le vérifier en lançant:

docker ps

Si, pour une raison quelconque, les conteneurs des chantiers navals n’ont pas démarré, vous pouvez les redémarrer manuellement en exécutant + docker start shipyard-rethinkdb shipyard.

Maintenant que votre hôte Docker est correctement configuré, nous pouvons l’ajouter à Shipyard en tant que moteur. Accédez à l’interface graphique de votre chantier naval et accédez à l’onglet * Moteurs *. Cliquez sur le bouton * + Ajouter *. Il ressemblera à ceci:

image: https: //assets.digitalocean.com/articles/wordpress_shipyard/1.png [L’écran "Ajouter un moteur" contient des champs de saisie tels que "nom" et "libellés"]

Ajoutez les champs suivants.

  • * Nom *: utilisez un nom qui vous permettra de reconnaître le moteur comme étant votre Droplet actuel, comme le nom d’hôte de votre Droplet.

  • * Labels *: Les étiquettes que vous ajoutez à votre moteur vous permettront de contrôler les conteneurs autorisés à s’exécuter sur celui-ci. En fonction de l’utilisation souhaitée de cette Droplet, vous pouvez utiliser des étiquettes telles que production ou test.

  • * Adresse *: Utilisez le port Docker que nous venons d’ouvrir: + http: //: 4243 +

Maintenant, cliquez sur le bouton * Ajouter * en bas. Shipyard va maintenant se connecter à votre hôte Docker, vérifier la connexion et l’ajouter en tant que moteur. Une fois que cela est fait, vous serez redirigé vers l’onglet * Engines *. Le moteur sera d’abord répertorié comme étant hors ligne. Attendez une seconde ou deux et actualisez la page. Vous devriez maintenant pouvoir voir les détails de votre hôte Docker.

Étape 4 - Déploiement de conteneurs à l’aide d’un chantier naval

Maintenant que nous avons ajouté notre hôte Docker à Shipyard en tant que moteur, nous pouvons utiliser Shipyard pour démarrer, arrêter et déployer des conteneurs.

Accédez à l’interface graphique du chantier naval et jetez un coup d’œil à l’onglet * Conteneurs *. Cette liste répertorie tous les conteneurs exécutés sur chaque hôte Docker que vous avez ajouté à Shipyard. Si vous n’avez rien fait d’autre, cet onglet devrait afficher au moins trois conteneurs, dont deux sont en cours d’exécution:

image: https: //assets.digitalocean.com/articles/wordpress_shipyard/2.png [l’onglet "Conteneurs" devrait répertorier "chantier naval", "chantier naval-rethinkdb" et "chantier naval-rethinkdb-data"]

Essayons de déployer un nouveau blog Wordpress. En utilisant les images officielles du repo Docker, nous devrons déployer un conteneur MySQL et Wordpress.

Cliquez sur le bouton * + Deploy *. L’écran suivant nous permettra de configurer le conteneur à déployer. Entrez les informations dans les champs spécifiés ci-dessous.

image: https: //assets.digitalocean.com/articles/wordpress_shipyard/3.png [Champs: Image, Nom du conteneur]

  • * Image *: Entrez + mariadb +. (MariaDB est un fork de MySQL à code source ouvert.)

  • * Nom du conteneur *: Vous pouvez utiliser ce que vous voulez, par exemple. + mysql-test.

  • * Environnement *: La description de l’image vous indiquera les variables d’environnement que vous pouvez utiliser. Dans ce cas, utilisez + MYSQL_ROOT_PASSWORD = 6f23b328e7 +.

image: https: //assets.digitalocean.com/articles/wordpress_shipyard/4.png [Champs: Ports, Type, Stratégie de redémarrage, Étiquettes]

  • * Type *: Ceci détermine la manière dont le conteneur doit être déployé sur plusieurs moteurs. Dans ce cas, utilisez + service +.

  • * Labels *: Ceci sera utilisé pour faire correspondre les conteneurs aux moteurs. Cochez simplement l’une des étiquettes que vous avez affectées à votre moteur.

  • * Politique de redémarrage *: Ceci détermine si le conteneur doit être automatiquement redémarré après une erreur ou un redémarrage de Docker. Dans ce cas, laissez-le sur + no +.

Maintenant, cliquez sur * Deploy *. Le lancement du conteneur prendra un certain temps. Vous devriez être redirigé vers la liste des conteneurs, qui devrait maintenant contenir un conteneur nommé + mysql-test + (ou le nom que vous avez utilisé).

Vous venez de déployer votre premier conteneur Docker avec Shipyard!

Nous allons maintenant utiliser le même processus pour déployer un conteneur WordPress, lié à notre conteneur MySQL. Cliquez à nouveau sur le bouton * + Déployer * et remplissez les champs suivants:

  • * Image *: + wordpress

  • * Nom *: + wordpress-test

  • * Liens *: +: mysql

  • * Type *: + service +

  • * Étiquettes *: Cochez toutes les étiquettes que vous avez utilisées pour votre moteur.

  • * Politique de redémarrage *: Laissez ceci sur + no +.

Une dernière chose à faire: nous voulons pouvoir accéder au contenu Web de ce conteneur WordPress depuis n’importe où, nous devons donc exposer son port + 80 +. Pour ce faire, cliquez sur le signe plus en regard de la rubrique * Port *.

image: https: //assets.digitalocean.com/articles/wordpress_shipyard/5.png [mappage du port tcp 1234 sur le port conteneur 80]

Choisissez * TCP * sous * Protocole *, laissez * IP * vide, entrez * 1234 * en tant que * Port * et * 80 * en tant que * Port conteneur *.

Vous pouvez maintenant cliquer sur * Deploy *. Une fois encore, il faudra un certain temps avant que vous ne soyez redirigé vers la liste de conteneurs. La liste ne doit pas non plus montrer un conteneur nommé + wordpress-test. Cliquez sur le lien à côté pour voir plus de détails.

image: https: //assets.digitalocean.com/articles/wordpress_shipyard/6.png [écran de détail du conteneur dans le chantier naval]

Sous * Ports *, vous verrez que le port du conteneur WordPress + 80 + est maintenant publié sur le port de votre serveur + 1234 +. Shipyard est utile pour faire directement de cette liste un lien cliquable que vous pouvez utiliser pour accéder à l’adresse publiée.

Cliquez sur ce lien. Cela vous mènera à l’assistant d’installation de WordPress. Une fois que vous aurez rempli les champs de cette page, vous pourrez vous connecter à votre tout nouveau blog WordPress et le voir également comme un site Web.

Conclusion

Vous avez maintenant utilisé avec succès Shipyard pour déployer une application réelle sur votre hôte Docker!

Le chantier naval est opérationnel sur votre serveur. Vous devriez également pouvoir configurer des serveurs supplémentaires avec Docker et les connecter à votre instance de Shipyard pour la gestion. Vous avez également appris à vous connecter à votre instance Shipyard à l’aide de la CLI et de l’interface graphique et à déployer de nouveaux conteneurs sur votre hôte Docker à l’aide de l’interface graphique.

Vous êtes maintenant libre d’essayer l’une des milliers d’applications Web disponibles sur le registre Docker. Par exemple, vous pouvez déployer un conteneur Nginx pour héberger votre nouveau blog WordPress sur une URL plus lisible, comme décrit dans https://www.digitalocean.com/community/tutorials/docker-explained-how-to-containerize-and-use. -nginx-as-a-proxy [ce tutoriel].