Comment déployer un blog fantôme avec Docker

0
86

Ghost est une plate-forme de création de contenu populaire écrite en JavaScript avec Node.js. Le logiciel open source est livré avec tout ce dont vous avez besoin pour créer, créer des thèmes, publier et gérer votre propre blog.

Ghost est un logiciel open source pris en charge par le service hébergé officiel Ghost(Pro). Vous pouvez l'installer sur votre propre serveur en ajoutant Node.js et en utilisant Ghost CLI pour configurer votre pile. Ghost est également disponible en tant qu'image Docker qui regroupe toutes les dépendances pour vous.

Dans ce guide, nous utiliserons Docker pour rendre rapidement opérationnel un nouveau blog Ghost. Installez Docker et Docker Compose sur votre hôte avant de continuer. Alors que vous pouvez déployer Ghost en utilisant Docker seul, Compose simplifie la fourniture et la gestion des valeurs de configuration dont votre site aura besoin pour démarrer.

Démarrage d'un conteneur Ghost

Vous pouvez démarrer un site Ghost de base avec une seule commande Docker :

docker run -d -p 2368:2368 –name simple-ghost ghost:4

Cela fera apparaître Ghost sur son port par défaut de 2368. Visitez http://localhost:2368 pour afficher votre site ou http://localhost:2368/ghost pour accéder au panneau d'administration de Ghost. Vous devrez fournir certains paramètres de première exécution pour finaliser votre installation de Ghost et créer un compte utilisateur initial.

Publicité

Cette approche est idéale pour une expérimentation rapide si vous essayez simplement Ghost. Cependant, nous n'avons pas encore configuré le stockage persistant. Vos données seront donc perdues lorsque le conteneur s'arrêtera.

< /p>

Voici un exemple plus complet qui utilise Docker Compose pour configurer Ghost avec un volume Docker. Montez un volume dans le répertoire /var/lib/ghost/content pour stocker les données de Ghost en dehors du conteneur.

version : "3" services : ghost : image : ghost:4 ports : – 8080:2368 environnement : url : https://ghost.example.com volumes : – ghost:/var/lib/ghost/content restart : à moins que les volumes ne soient arrêtés : ghost :

Ce fichier Compose présente quelques autres modifications apportées à la configuration du conteneur. Le port 2368 exposé par le conteneur est mappé sur le port 8080 de votre hôte, ce qui vous permet d'utiliser localhost:8080 pour accéder à Ghost. La politique de redémarrage est modifiée en moins d'arrêt pour garantir que votre site s'affiche automatiquement après le redémarrage de votre hôte.

Utilisez maintenant Compose pour afficher votre site :

docker-compose up -d

Configuration de Ghost

Ghost prend en charge plusieurs paramètres de configuration pour personnaliser son fonctionnement et paramétrer votre site. Lorsque vous utilisez Docker, vous pouvez fournir ces valeurs en tant que variables d'environnement.

Les fichiers de configuration de Ghost utilisent des objets JSON imbriqués pour stocker les valeurs. Vous pouvez convertir les clés JSON en leurs homologues de variable d'environnement en remplaçant chaque niveau d'arborescence par des caractères __ (double trait de soulignement) :

# dans un fichier de configuration JSON { “mail”: { “transport”: “SMTP” } } # as une variable d'environnement mail__transport=SMTP

Utilisez le champ d'environnement de votre fichier docker-compose.yml pour fournir ces paramètres à votre conteneur Ghost :

version : "3" services : ghost : environnement : mail__transport : publicité SMTP

Reportez-vous à la documentation de Ghost pour une liste exhaustive des options prises en charge. Vous pouvez configurer un système de messagerie, utiliser une URL distincte pour accéder au panneau d'administration, remplacer les chemins de répertoire et basculer les options de confidentialité via les variables d'environnement disponibles.

L'option URL est particulièrement importante car elle est requise pour les sites de production en direct. Ceci définit l'URL que les visiteurs externes utiliseront pour accéder à votre site. Définissez ceci sur le nom de domaine de votre site dans votre environnement docker-compose.yml :

 : url : https://ghost.example.com

Utilisation d'une base de données externe

Par défaut, Ghost utilise une base de données SQLite stockée sous forme de fichier dans le répertoire de contenu de votre site. Il sera conservé dans le cadre du volume Docker créé ci-dessus. Vous pouvez utiliser une base de données MySQL externe à la place en fournissant les détails de connexion via des variables d'environnement préfixées par la base de données :

services : ghost: # … environment: database__client: mysql database__connection__host: ghost_mysql database__connection__user: root database__connection__password: databasePw database__connection__database: ghost ghost_mysql : image : mysql:5.7 exposé : – 3306 environnement : MYSQL_DATABASE : fantôme MYSQL_ROOT_PASSWORD : volumes databasePw : – mysql :/var/lib/mysql restart : volumes à moins d'être arrêtés : mysql :

Ce fichier Compose inclut un autre service qui exécute MySQL dans un conteneur supplémentaire. Les variables d'environnement sont définies sur le service Ghost pour fournir les détails de connexion MySQL. Un volume mysql séparé est créé pour conserver les fichiers de stockage de la base de données.

Compose relie automatiquement les services à un réseau Docker. Ghost peut atteindre le conteneur ghost_mysql en utilisant le nom du service comme nom d'hôte. Si vous souhaitez utiliser une base de données MySQL non dockerisée existante, vous pouvez supprimer la définition de service ghost_mysql et fournir à la place l'adresse IP, le nom du schéma de la base de données et les informations d'identification de l'utilisateur de votre serveur MySQL.

Proxying trafic vers votre conteneur

Maintenant, votre site Ghost devrait être opérationnel, mais il est toujours exposé sur le port 8080. Si vous n'exécutez rien d'autre sur votre hôte, vous pouvez lier le port 80 ou 443 à la place pour le rendre directement accessible via votre serveur& le nom de domaine de #8217;. Dans d'autres situations, utilisez un proxy inverse tel que NGINX pour transférer le trafic du Web vers votre conteneur Ghost.

Ajoutez NGINX à votre hôte :

sudo apt update sudo apt install nginx # Autoriser HTTP/Trafic HTTPS via le pare-feu sudo ufw allow 80 sudo ufw allow 443

Définissez un hôte NGINX pour votre site dans /etc/nginx/sites-available/ghost.example.com :

serveur { nom_serveur fantôme.exemple.com ; index index.html ; access_log /var/log/nginx/ghost_access.log error_log /var/log/nginx/ghost_error.log erreur ; emplacement/{ proxy_pass http://127.0.0.1:8080; proxy_redirect désactivé ; proxy_set_header Hôte $http_host ; proxy_set_header X-Original-IP $adresse_distante ; } } Publicité

Ce fichier configure NGINX pour transférer le trafic vers ghost.example.com via le port 8080 sur localhost, qui était auparavant lié à votre conteneur Ghost. Activez le nouveau fichier de configuration en le liant au répertoire sites-enabled de NGINX :

sudo ln -s /etc/nginx/sites-available/ghost.example.com /etc/nginx/sites-enabled/ghost.example.com

Redémarrez NGINX pour appliquer vos modifications :

sudo service nginx restart

Vous pouvez maintenant configurer SSL avec le service gratuit Let's Encrypt. Ajoutez Let’s Encrypt’s Certbot pour automatiser l'émission et le renouvellement des certificats :

sudo apt install certbot

Utilisez Certbot pour obtenir des certificats pour votre site NGINX :

sudo certbot –nginx < p>Certbot lira vos sites NGINX et générera des certificats pour leurs champs de configuration server_name. Il reconfigurera automatiquement NGINX pour servir le certificat avec votre site. Vous devriez maintenant être en mesure d'accéder à votre blog Ghost en visitant votre nom de domaine via HTTPS.

Bien que nous nous soyons concentrés sur NGINX dans cet article, il existe d'autres options pour rediriger le trafic Web vers votre Ghost. récipient. Traefik est un concurrent de premier plan qui bénéficie d'un support de premier ordre pour Docker. Le déploiement d'une instance Traefik vous permettrait de configurer le routage et le SSL automatique via les étiquettes Docker que vous auriez définies sur votre conteneur Ghost.

Gestion des mises à jour Ghost

< p>Vous pouvez mettre à jour Ghost en remplaçant le conteneur Docker de votre site par un nouveau contenant une version mise à jour de l'image Ghost. Comme le contenu de votre site est stocké en toute sécurité dans un volume Docker séparé, il sera conservé lorsque le volume sera rattaché au nouveau conteneur.

Si vous balisez un volume majeur version image dans votre docker-compose.yml, comme ghost:4, vous pouvez mettre à jour vers la dernière version mineure en exécutant docker-compose up avec l'indicateur –pull :

docker-compose up -d –pull Advertisement

Cela demande à Compose de vérifier les changements dans la balise d'image et d'extraire une version mise à jour lorsqu'elle est disponible. Il remplacera vos conteneurs par de nouvelles instances en utilisant la dernière version d'image correspondant à la balise.

Lorsque vous souhaitez modifier la balise que vous utilisez, mettez à jour la référence de l'image dans votre fichier docker-compose.yml. Répétez docker-compose up -d pour extraire l'image et démarrer de nouveaux conteneurs. Par exemple, si Ghost v5 sort à l'avenir, vous pouvez remplacer votre docker-compose.yml par image : ghost:5 pour passer à la nouvelle version majeure.

Docker facilite l'obtention des mises à jour de Ghost en tirant la dernière image et en remplaçant vos conteneurs. Néanmoins, vous devez toujours faire attention aux modifications que vous appliquez. Consultez le journal des modifications de Ghost avant d'effectuer une mise à niveau majeure au cas où vous auriez besoin de prendre des mesures supplémentaires pour terminer la migration.

Utilisation de ghost-cli

ghost-cli est disponible dans l'image Ghost Docker. Cet utilitaire est utilisé pour configurer et maintenir Ghost lorsqu'il est installé dans des environnements traditionnels non conteneurisés.

Vous pouvez accéder à ghost-cli via Docker en utilisant la commande ghost avec docker exec. Voici un exemple qui utilise la sous-commande version pour révéler la version de Ghost que vous utilisez :

docker exec -it my-ghost-container ghost version

Bien que de nombreux composants ghost-cli fonctionnent, certains ne sont pas pris en charge dans les environnements Dockerized. Les commandes telles que l'installation, la configuration, la mise à jour et la désinstallation sont soit cassées, sans signification ou contraires aux meilleures pratiques lorsqu'elles sont utilisées avec l'image Docker de Ghost. Ghost et toutes ses dépendances sont intégrés à l'image et n'ont pas besoin d'être “installés” ; les mises à jour doivent être appliquées en démarrant un nouveau conteneur, comme indiqué ci-dessus.

Résumé

Ghost est une plate-forme de blogs moderne qui offre un tableau de bord propre, des capacités de création de contenu riches , et une prise en charge avancée des thèmes et de la personnalisation. L'utilisation de Docker pour héberger Ghost simplifie la procédure de configuration, réduit le nombre de packages de système d'exploitation dont vous avez besoin et contribue à rendre votre site plus portable d'un environnement à l'autre.

Publicité

Une fois que votre blog Dockerisé est opérationnel, utilisez la norme Documentation de développement Ghost pour gérer votre site et son contenu. Vous pouvez configurer des abonnements, des newsletters, des thèmes personnalisés et des intégrations d'API à l'aide des fonctionnalités intégrées de la plate-forme.