Les images

Billet

Au même titre qu'il n'y pas qu'une seule branche à l'arbre de développement de Dotclear, il n'y a pas qu'une image Docker de Dotclear. Quelles sont ces images et de quoi sont elles constituées ?

Pile de dossiers

1. Les images

Chaque image correspond à une Release de Dotclear et contient les compilations pour différentes plateformes. Le nom de base de ces images est docker-dotclear.

1.1 Les tags

Il y a donc 3 groupes d'images Docker nommés tags :

  • x.xx.x : Release stable, exemple 2.32.1
  • testing : Release testing, exemple 2.32.1-p20241130.0936
  • dev : Release unstable, exemple 2.33-dev-r20241129.2220

Un quatrième tag nommé latest est disponible et correspond à la plus récente release stable. Par exemple à la sortie de Dotclear 2.32.1, on aura les tags 2.32.1 et latest qui seront en réalité les mêmes. Elles sont générées lors de la sortie d'une version officielle de Dotclear pour la version stable et une fois par jour pour les versions testing et unstable, et elle sont également générées si une modification de la structure de l'image est faite.

1.2 Les plateformes

A l'heure de la rédaction de cette article, les images sont compilées pour :

  • linux/386,
  • linux/amd64,
  • linux/arm64,
  • linux/arm/V7


1.3 Les fournisseurs

Ces images sont déposées sur des plateformes de distribution appelées registry :


1.4 Les dénominations

De tout ce qui a été dit précédemment on peut tirer les exemples suivant de nom d'image Docker de Dotclear :

  • jcpd/docker-dotclear:latest
  • ghcr.io/jcdenis/docker-dotclear:2.32.1
  • ghcr.io/jcdenis/docker-dotclear:testing
  • jcpd/docker-dotclear:sha256:840ad4651566f10bdbd38852ad25d8f17ed60bc2f78d253287baa565b82c68d0
  • ...


2. Le contenu

Toutes les images ont une base commune à quelques exceptions près.

2.1 La base

Au moment de la rédaction de ce billet, les images sont basées sur :

  • OS : Alpine Linux (3.20.3)
  • Serveur web: Nginx (1.26.2)
  • Langage : PHP-fpm (8.3.14)
  • CMS : Dotclear (2.32.1, 2.32.1-testing, 2.33-dev)

De plus l'image peut héberger une base de donnée SQLite, sinon elle supporte Mysql ou Postgresql mais dans un container séparé.

2.2 Les modules

En plus des extensions PHP 'common, cli et fpm, pour le bon fonctionnement de Dotclear, elle embarque les modules PHP suivants :

  • session
  • curl
  • gd
  • gmp
  • exif
  • tidy
  • intl
  • json
  • mbstring
  • iconv
  • gettext
  • mysqli
  • pgsql
  • opcache
  • dom
  • xml
  • simplexml
  • zip
  • pdo_sqlite


2.3 Les modifications

La configuration de l'image est faite à sa compilation, elle est livrée fonctionnelle. Voici une liste des fichiers modifiés :

  • /etc/nginx/nginx.conf : fichier de configuration du serveur web Nginx
  • /etc/nginx/snippets/snippets_subfolder.conf : configuration commune de Nginx pour un fonctionnement par répertoires du multiblog
  • /etc/nginx/snippets/snippets_subdomain.conf : configuration commune de Nginx pour un fonctionnement par sous-domaines du multiblog
  • /etc/nginx/snippets/snippets_common.conf : configuration commune de Nginx
  • /etc/XX/php.ini : configuration de PHP (différent suivant l'image)
  • /etc/XX/php-fpm.d/www.conf : configuration de PHP-FPM
  • /usr/src/dotclear : sauvegarde initial de la release Dotclear
  • /var/lib/dotclear : toute la structure utile à Dotclear (voir ci-dessous)


2.4 Les répertoires

Toute la structure utile de Dotclear est dans le répertoire /var/lib/dotclear, il est fortement recommandé (obligatoire) de monter ce répertoire soit dans un volume Docker, soit dans un répertoire de l'hôte. Cela permet de ne pas tout perdre lors de la relance ou de la mise à jour du container.
Le fichier de configuration de Dotclear config.php sera créé à la racine lors de la première installation.
Ce dossier est constitué de sous répertoire comme suit :

2.4.1 app
Il contient l'application Dotclear, elle sera entièrement écrasé lors d'une mise à jour du container, il est donc conseillé de ne rien garder dans ce répertoire.

2.4.2 blogs
Il contient un répertoire par blog, qui sera sera le répertoire public du blog. La configuration Nginx pointera ces répertoires suivant le blog demandé et un plugin Dotclear modifiera les paramètres du blog pour correspondre. Les paramètres (modifiable dans le plugin about:config) sont :

  • system / public_path : /var/www/dotclear/blogs/blog_id
  • system / public_url : /blog_id/public en fonctionnement par répertoire et /public en fonctionnement par sous-domaine


2.4.3 cache
Remplace le répertoire de cache par défaut de Dotclear. Son chemin est modifié dans le fichier config.php lors de la première installation.

2.4.4 plugins
Second répertoire des plugins du multiblog. Le plugins installés par la suite le seront dans ce répertoire.

2.4.5 servers
Contient les fichiers de configuration des serveurs web Nginx. par défaut deux fichiers sont proposés :

  • subdomain.conf : pour une gestion par sous domaine. ex: http://blog.id.domain.tld
  • subfolder.conf : pour une gestion par sous dossier. ex: http://localhost/blog_id

Les deux configurations peuvent être présentes en même temps dans ce répertoire, mais il est conseillé de modifier (mettre en commentaire) celle qui ne sert pas. Attention si un de ces deux fichiers est supprimé, il sera réinstallé au prochain redémarrage du container !
Si ces images sont utilisées en production, il est obligatoire d'utiliser un serveur proxy en amont car ces images sont configurées par défaut pour n'écouter que sur le port 80. On en reparlera sur ce blog plus tard avec des exemples concrets.

Contenu original de subdomain.conf :

server {
    server_name ~^(?<dc_blog_id>\w*?)?\.?(\w+\.\w+)$;

    if ($dc_blog_id = '') {
            set $dc_blog_id default;
    }

    if ($dc_blog_id = 'blog') {
            set $dc_blog_id default;
    }
    include /etc/nginx/snippets/snippets_subdomain.conf;
    include /etc/nginx/snippets/snippets_common.conf;
}

Contenu original de subfolder.conf :

server {
    server_name localhost;

    include /etc/nginx/snippets/snippets_subfolder.conf;
    include /etc/nginx/snippets/snippets_common.conf;
}


2.4.6 themes
Ce répertoire contient tous les thèmes originaux et installés par la suite du multiblog. Par défaut la configuration est commune à tous les blogs. Les thèmes originaux de Dotclear sont recopier dans ce répertoire à chaque redémarrage du container.
La configuration Nginx pointera ce répertoire et un plugin Dotclear modifiera les paramètres du blog pour correspondre. Les paramètres (modifiable dans le plugin about:config) sont :

  • system / theme_path : /var/www/dotclear/themes
  • system : theme_url : /themes


2.4.7 var
Remplace le répertoire de var par défaut de Dotclear. Son chemin est modifié dans le fichier config.php lors de la première installation.

3. Extra

  • Les plugins sysInfo, dcLog et DotclearWatch sont livrés d'origine
  • Le container support le healthcheck Docker
  • La mise à jour du container vers une version plus récente mettra à jour Dotclear. (Ne pas oublier de se déloguer/reloguer de l'amdin)
  • L'image dev est configuré avec le mode DEBUG activé et un PHP plus verbeux.


Voila pour une première présentation des image Docker de Dotclear.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : https://docker.dotclear.watch/trackback/247