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.