Ce guide détaille la procédure technique pour migrer une instance Listmonk d’une installation en binaire autonome vers une architecture Docker Compose sous LXC, en garantissant la continuité des données.
Sur l’ancien LXC (binaire) :
pg_dump -U listmonk -d listmonk > listmonk_dump.sqluploads.Sur le nouveau conteneur, les fichiers sont organisés dans /root/listmonk.
Important : pour une migration sans conflit, le fichier docker-compose.yml doit impérativement utiliser les mêmes USER, PASSWORD et DATABASE que l’ancienne installation.
services:
listmonk_db:
image: postgres:17-alpine
container_name: listmonk_db
restart: unless-stopped
environment:
- POSTGRES_USER=listmonk
- POSTGRES_PASSWORD=votre_mdp
- POSTGRES_DB=listmonk
volumes:
- ./listmonk-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U listmonk -d listmonk"]
interval: 10s
timeout: 5s
retries: 5
listmonk_app:
image: listmonk/listmonk:latest
container_name: listmonk_app
restart: unless-stopped
depends_on:
listmonk_db:
condition: service_healthy
ports:
- "9000:9000"
environment:
- LISTMONK_db__host=listmonk_db
- LISTMONK_db__user=listmonk
- LISTMONK_db__password=votre_mdp
- LISTMONK_db__database=listmonk
- LISTMONK_db__port=5432
- LISTMONK_app__address=0.0.0.0:9000
volumes:
- ./config.toml:/listmonk/config.toml
- ./uploads:/listmonk/uploads
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:9000/healthlib"]
interval: 30s
timeout: 10s
retries: 3
Au départ, le dossier /root/listmonk contient le docker-compose.yml, le dump SQL et le dossier uploads. Le dossier listmonk-data sera créé par Docker lors de l’étape 1 ci-dessous.
docker compose up -d listmonk_db
docker cp /root/listmonk/listmonk_dump.sql listmonk_db:/backup.sql
docker exec -it listmonk_db psql -U listmonk -d listmonk -f /backup.sql
docker compose up -d listmonk_app