Een Ghost-blog implementeren met Docker

0
90

Ghost is een populair platform voor het maken van inhoud dat is geschreven in JavaScript met Node.js. De open-source software wordt geleverd met alles wat je nodig hebt om je eigen blog te schrijven, thema's te maken, te publiceren en te onderhouden.

Ghost is open-source software die wordt ondersteund door de officiële door Ghost(Pro) gehoste service. Je kunt het op je eigen server installeren door Node.js toe te voegen en de Ghost CLI te gebruiken om je stack in te stellen. Ghost is ook beschikbaar als een Docker-image die alle afhankelijkheden voor je bundelt.

In deze handleiding gebruiken we Docker om snel een nieuwe Ghost-blog operationeel te krijgen. Installeer Docker en Docker Compose op uw host voordat u verder gaat. Hoewel je Ghost alleen met Docker kunt implementeren, maakt Compose het eenvoudiger om de configuratiewaarden te leveren en te beheren die je site nodig heeft om aan de slag te gaan.

Een Ghost-container starten

Je kunt een eenvoudige Ghost-site starten met een enkele Docker-opdracht:

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

Hierdoor wordt Ghost weergegeven op zijn standaardpoort 2368. Ga naar http://localhost:2368 om uw site te bekijken of http://localhost:2368/ghost om toegang te krijgen tot het Ghost-beheerpaneel. U moet enkele instellingen voor de eerste keer opgeven om uw Ghost-installatie te voltooien en een eerste gebruikersaccount aan te maken.

Advertentie

Deze aanpak is ideaal voor snelle experimenten als je Ghost net uitprobeert. We hebben echter nog geen permanente opslag ingesteld, zodat uw gegevens verloren gaan wanneer de container stopt.

Hier is een completer voorbeeld dat Docker Compose gebruikt om Ghost in te stellen met een Docker-volume. Koppel een volume aan de map /var/lib/ghost/content om de gegevens van Ghost buiten de container op te slaan.

versie: "3" services: ghost: image: ghost:4 poorten: – 8080:2368 omgeving: url: https://ghost.example.com volumes: – ghost:/var/lib/ghost/content restart: tenzij-stopped volumes: ghost:

Dit Compose-bestand vertoont een paar andere wijzigingen in de configuratie van de container. Poort 2368 die door de container wordt weergegeven, wordt toegewezen aan poort 8080 op uw host, zodat u localhost:8080 kunt gebruiken om toegang te krijgen tot Ghost. Het herstartbeleid is gewijzigd in tenzij-stopped om ervoor te zorgen dat uw site automatisch wordt weergegeven nadat uw host opnieuw is opgestart.

Gebruik nu Compose om uw site te openen:

docker-compose up -d

Spook configureren

Ghost ondersteunt verschillende configuratieparameters om de werking aan te passen en uw site in te stellen. Wanneer u Docker gebruikt, kunt u deze waarden als omgevingsvariabelen opgeven.

Ghost's configuratiebestanden gebruiken geneste JSON-objecten om waarden op te slaan. U kunt JSON-sleutels converteren naar hun tegenhangers van omgevingsvariabelen door elk boomniveau te vervangen door __ (dubbele onderstrepingstekens) tekens:

# in een JSON-configuratiebestand { “mail”: { “transport”: “SMTP” } } # as een omgevingsvariabele mail__transport=SMTP

Gebruik het omgevingsveld in uw docker-compose.yml-bestand om deze parameters aan uw Ghost-container te leveren:

version: "3" services: ghost: environment: mail__transport: SMTP Advertisement

Raadpleeg de Ghost-documentatie voor een volledige lijst van ondersteunde opties. U kunt een e-mailsysteem opzetten, een aparte URL gebruiken om toegang te krijgen tot het beheerdersdashboard, directorypaden overschrijven en privacy-opties in- en uitschakelen via de beschikbare omgevingsvariabelen.

De url-optie is vooral belangrijk omdat deze vereist is voor live productiesites. Dit definieert de URL die externe bezoekers zullen gebruiken om toegang te krijgen tot uw site. Stel dit in op de domeinnaam van uw site in uw docker-compose.yml:

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

Een externe database gebruiken

Ghost gebruikt standaard een SQLite-database die is opgeslagen als een bestand in de inhoudsdirectory van uw site. Het blijft behouden als onderdeel van het Docker-volume dat hierboven is gemaakt. U kunt in plaats daarvan een externe MySQL-database gebruiken door verbindingsdetails op te geven via omgevingsvariabelen met een database-prefix:

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 bloot: – 3306 omgeving: MYSQL_DATABASE: ghost MYSQL_ROOT_PASSWORD: databasePw volumes: – mysql:/var/lib/mysql herstart: tenzij-gestopte volumes: mysql:

Dit Compose-bestand bevat een andere service die MySQL in een extra container uitvoert. Omgevingsvariabelen worden ingesteld op de Ghost-service om de MySQL-verbindingsdetails te leveren. Er wordt een apart mysql-volume gemaakt om de databaseopslagbestanden te bewaren.

Compose koppelt automatisch services aan een Docker-netwerk. Ghost kan de ghost_mysql-container bereiken door de servicenaam als hostnaam te gebruiken. Als u een bestaande niet-gedockte MySQL-database wilt gebruiken, kunt u de ghost_mysql-servicedefinitie verwijderen en in plaats daarvan het IP-adres van uw MySQL-server, de naam van het databaseschema en de gebruikersreferenties opgeven.

Proxying van verkeer naar uw container

Nu zou uw Ghost-site operationeel moeten zijn, maar hij is nog steeds zichtbaar op poort 8080. Als u niets anders op uw host wilt uitvoeren, kunt u in plaats daarvan poort 80 of 443 binden om deze direct toegankelijk te maken via uw server& #8217;s domeinnaam. Gebruik in andere situaties een reverse proxy zoals NGINX om verkeer van het web naar uw Ghost-container door te sturen.

Voeg NGINX toe aan uw host:

sudo apt update sudo apt install nginx # HTTP toestaan/HTTPS-verkeer door de firewall sudo ufw allow 80 sudo ufw allow 443

Definieer een NGINX-host voor uw site in /etc/nginx/sites-available/ghost.example.com:

server { servernaam ghost.example.com; indexindex.html; access_log /var/log/nginx/ghost_access.log error_log /var/log/nginx/ghost_error.log fout; locatie/{ proxy_pass http://127.0.0.1:8080; proxy_redirect uit; proxy_set_header Host $http_host; proxy_set_header X-Origineel-IP $remote_addr; } } Advertentie

Dit bestand configureert NGINX om verkeer door te sturen naar ghost.example.com via poort 8080 op localhost, die eerder was gebonden aan uw Ghost-container. Schakel het nieuwe configuratiebestand in door het te koppelen aan NGINX's sites-enabled directory:

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

Start NGINX opnieuw om uw wijzigingen toe te passen:

sudo service nginx restart

Nu kun je SSL instellen met de gratis Let's Encrypt-service. Voeg Let's Encrypt's Certbot toe om de uitgifte en verlenging van certificaten te automatiseren:

sudo apt install certbot

Gebruik Certbot om certificaten voor uw NGINX-site te verkrijgen:

sudo certbot –nginx < p>Certbot leest uw NGINX-sites en genereert certificaten voor hun servernaamconfiguratievelden. Het zal NGINX automatisch opnieuw configureren om het certificaat bij uw site te leveren. Je zou nu toegang moeten hebben tot je Ghost-blog door naar je domeinnaam te gaan via HTTPS.

Hoewel we ons in dit artikel hebben gericht op NGINX, zijn er andere opties om webverkeer door te sturen naar je Ghost container. Traefik is een toonaangevende kanshebber die eersteklas ondersteuning krijgt voor Docker. Als u een Traefik-instantie implementeert, kunt u routering en automatische SSL configureren via Docker-labels die u op uw Ghost-container hebt ingesteld.

Ghost-updates beheren

< p>Je kunt Ghost updaten door de Docker-container van je site te vervangen door een nieuwe met een bijgewerkte versie van de Ghost-image. Omdat de inhoud van uw site veilig is opgeslagen in een apart Docker-volume, blijft het behouden wanneer het volume opnieuw wordt gekoppeld aan de nieuwe container.

Als u een major tagt afbeeldingsversie in uw docker-compose.yml, zoals ghost:4, u kunt updaten naar de laatste kleine release door docker-compose uit te voeren met de –pull-vlag:

docker-compose up -d –pull Advertentie

Dit geeft Compose de opdracht om te controleren op wijzigingen in de afbeeldingstag en om een ​​bijgewerkte versie op te halen indien beschikbaar. Het zal uw containers vervangen door nieuwe instanties met behulp van de nieuwste afbeeldingsversie die overeenkomt met de tag.

Als u de tag die u gebruikt wilt wijzigen, werkt u de afbeeldingsreferentie bij in uw docker-compose.yml-bestand. Herhaal docker-compose up -d om de afbeelding op te halen en nieuwe containers te starten. Als bijvoorbeeld Ghost v5 in de toekomst uitkomt, kunt u uw docker-compose.yml wijzigen in image: ghost:5 om naar de nieuwe hoofdversie te gaan.

Docker maakt het gemakkelijk om Ghost-updates te verkrijgen door de nieuwste afbeelding te trekken en uw containers te vervangen. Niettemin moet u nog steeds aandacht besteden aan de wijzigingen die u aanbrengt. Raadpleeg de Ghost changelog voordat u een grote upgrade uitvoert voor het geval u extra stappen moet ondernemen om de migratie te voltooien.

Ghost-cli gebruiken

ghost-cli is beschikbaar in de Ghost Docker-afbeelding. Dit hulpprogramma wordt gebruikt om Ghost in te stellen en te onderhouden wanneer het is geïnstalleerd in traditionele niet-gecontaineriseerde omgevingen.

Je hebt toegang tot ghost-cli via Docker door het ghost-commando te gebruiken met docker exec. Hier is een voorbeeld dat het versie-subcommando gebruikt om de Ghost-release die u gebruikt te onthullen:

docker exec -it my-ghost-container ghost-versie

Hoewel veel ghost-cli-componenten zullen werken, worden sommige niet ondersteund in Dockerized-omgevingen. Commando's zoals installeren, instellen, bijwerken en de-installeren zijn ofwel verbroken, zinloos of in strijd met de beste werkwijzen bij gebruik met Ghost's Docker-image. Ghost en al zijn afhankelijkheden zijn ingebouwd in de afbeelding en hoeven niet te worden “geïnstalleerd;” updates moeten worden toegepast door een nieuwe container te starten, zoals hierboven weergegeven.

Samenvatting

Ghost is een modern blogplatform met een overzichtelijk dashboard en uitgebreide mogelijkheden voor het maken van inhoud , en geavanceerde ondersteuning voor thema's en aanpassingen. Het gebruik van Docker om Ghost te hosten vereenvoudigt de installatieprocedure, vermindert het aantal besturingssysteempakketten dat u nodig hebt en helpt uw ​​site meer overdraagbaar te maken tussen omgevingen.

Advertentie

Zodra uw Dockerized-blog operationeel is, gebruikt u de standaard Ghost-ontwikkelingsdocumentatie om uw site en de inhoud ervan te beheren. U kunt lidmaatschappen, nieuwsbrieven, aangepaste thema's en API-integraties instellen met behulp van de ingebouwde functies van het platform.