Pour tenir compagnie au containeur nginx voici un containeur pour le moteur de blog à la mode, ghost.
Ghost 0.4.0
#
# VERSION 0.1.0
FROM ubuntu:quantal
MAINTAINER Thomas Montfort <thomas@montfort.fr>
# Pas de warning, tout automatique
ENV DEBIAN_FRONTEND noninteractive
# mise a jour - -y pour ne pas avoir de question
RUN apt-get update -y; \
apt-get upgrade -y
# supervisord
RUN apt-get install -y supervisor
# sshd
RUN apt-get install -y ssh
RUN mkdir -p /var/run/sshd
# Config minimale de sshd pour supervisor
RUN /bin/echo -e "[program:sshd] \ncommand=/usr/sbin/sshd -D \n" > /etc/supervisor/conf.d/sshd.conf
# Paquets utiles pour ghost
RUN apt-get install -y software-properties-common python-software-properties python g++ make curl unzip; \
add-apt-repository -y ppa:chris-lea/node.js; \
apt-get update -y; \
apt-get install --force-yes -y nodejs
# Telechargmenet de ghost
RUN curl --location --progress -O http://ghost.org/archives/ghost-0.4.0.zip; \
unzip -uo ghost-0.4.0.zip -d ghost; \
rm ghost-0.4.0.zip
# Installation de ghost
RUN cd ghost; \
cp config.example.js config.js; \
sed -i -e '0,/host: '"'"'127.0.0.1'"'"'/s//host: '"'"'0.0.0.0'"'"'/' config.js; \
npm config set strict-ssl false; \
npm config set registry "http://registry.npmjs.org/"; \
npm install -g node-gyp; \
npm install sqlite3 --build-from-source; \
npm install --production
# Configuration supervisord pour demarrer ghost
RUN /bin/echo -e "[program:ghost]\ncommand=//bin/bash -c \"cd /ghost && npm start\"\n" > /etc/supervisor/conf.d/ghost.conf
# Volume visible par l'hote
VOLUME /ghost/content
# On expose les ports 22 et 2368
EXPOSE 22 2368
# Au demarrage du containeur on lance supervisord
CMD ["/usr/bin/supervisord", "-n"]
Le volume /ghost/content
contient toutes les données (pages et base de données) du blog.
On peut démarrer le containeur avec la commande : docker run -d -i -t -name ghost -p 2368:2368 -p 10122:22 -v /home/ghost_blog/content:/ghost/content montfort/ghost:0.4.0
Il faut modifier la configuration de nginx pour renseigner l’adresse ip du containeur ghost. Un e prochaine évolution sera de lier tout ça de manière un peu plus dynamique.