[UPDATE 2026] Akeneo PIM 6 vers 7 en Docker — migration, upgrade et centralisation serveur avec MyVestaCP
Akeneo PIM 6 → 7 en Docker — migration et upgrade
Sixième étape : migrer Akeneo PIM 6 (Community Edition) d’un VPS standalone
vers PIM 7 en Docker Compose sur le serveur centralisé, avec reverse proxy MyVestaCP.
Introduction
Akeneo PIM 6 (Community Edition, v6.0.45) tourne actuellement sur un VPS séparé
(vps-3dce30a4, IP 51.91.252.98, SSH port 22, user ubuntu).
L’installation est en standalone : PHP 8.0, MySQL 8.0.30, Elasticsearch 7.x, le tout installé
directement sur le système dans /home/pim-community-standard/.
On migre vers le serveur centralisé (ns3210379, IP 141.95.154.67,
SSH port 38592) en Docker Compose, avec un upgrade de PIM 6.0 vers PIM 7.0
en même temps.
Architecture cible
- 5 conteneurs Docker : MySQL 8.0.30, Elasticsearch 8.4.2, PHP 8.1 FPM, Nginx, Job Worker
- Domaine :
pim.mcdtoolbox.com(port interne8480) - MyVestaCP gère le reverse proxy et les certificats SSL
- Fichiers Docker :
/home/docker/akeneo/
Ce qui change entre PIM 6 et PIM 7 :
PHP 8.0 → 8.1, Elasticsearch 7.x → 8.4.2,
le SKU n’est plus obligatoire (UUID devient l’identifiant technique),
les nouveaux endpoints API utilisent /products-uuid,
et la configuration du mailer passe en format DSN (MAILER_URL → MAILER_DSN).
Ressources nécessaires : Elasticsearch 8 consomme ~2-4 Go de RAM,
MySQL ~1-2 Go, PHP-FPM ~1 Go. Avec 64 Go de RAM sur le serveur, c’est largement suffisant,
même en coexistence avec Odoo 8 et Odoo 17.
1) Créer le domaine dans MyVestaCP
Dans le panel MyVestaCP → WEB → Add Web Domain :
pim.mcdtoolbox.com
Paramètres :
- DNS Support : cocher (obligatoire pour Let’s Encrypt)
- Mail Support : décocher
- Advanced options : laisser les valeurs par défaut
DNS Support obligatoire : même si le DNS est géré ailleurs (OVH, Cloudflare, etc.),
il faut cocher DNS Support dans MyVestaCP. Le script v-add-letsencrypt-domain
a besoin de la zone DNS locale pour créer l’enregistrement _acme-challenge.
Sans cette zone, la demande de certificat échoue avec une erreur 404.
Important : ne pas activer Let’s Encrypt pour l’instant — le DNS ne pointe pas encore vers le nouveau serveur.
2) Créer les templates Nginx pour reverse proxy PIM
Même principe que pour Odoo : on crée des templates Nginx personnalisés pour que VestaCP
fasse du reverse proxy vers le conteneur Docker (port 8480).
2.1 Template HTTP : akeneo-8480.tpl
|
1 |
nano /usr/local/vesta/data/templates/web/nginx/akeneo-8480.tpl |
Contenu :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
server { listen %ip%:%proxy_port%; server_name %domain_idn% %alias_idn%; error_log /var/log/%web_system%/domains/%domain%.error.log error; location /.well-known/acme-challenge { default_type text/plain; root /home/%user%/web/%domain%/public_html; } location / { proxy_pass http://127.0.0.1:8480; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_read_timeout 720s; proxy_connect_timeout 720s; proxy_send_timeout 720s; client_max_body_size 128M; } include %home%/%user%/conf/web/%domain%/nginx.conf_*; } |
Le client_max_body_size 128M est important pour PIM : l’import de fichiers CSV
et l’upload d’images produits peuvent être volumineux.
2.2 Template HTTPS : akeneo-8480.stpl
|
1 |
nano /usr/local/vesta/data/templates/web/nginx/akeneo-8480.stpl |
Contenu :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
server { listen %ip%:%proxy_ssl_port% ssl; http2 on; server_name %domain_idn% %alias_idn%; ssl_certificate %ssl_pem%; ssl_certificate_key %ssl_key%; error_log /var/log/%web_system%/domains/%domain%.error.log error; location / { proxy_pass http://127.0.0.1:8480; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Host $host; proxy_read_timeout 720s; proxy_connect_timeout 720s; proxy_send_timeout 720s; client_max_body_size 128M; } include %home%/%user%/conf/web/%domain%/nginx.conf_*; } |
2.3 Appliquer le template au domaine
|
1 |
/usr/local/vesta/bin/v-change-web-domain-proxy-tpl admin pim.mcdtoolbox.com akeneo-8480 |
2.4 Vérifier et recharger Nginx
|
1 2 |
nginx -t systemctl reload nginx |
3) Créer la structure des répertoires Docker
|
1 2 3 |
mkdir -p /home/docker/akeneo/pim mkdir -p /home/docker/akeneo/config/nginx mkdir -p /home/docker/akeneo/backup |
pim/: code source Akeneo PIM 7 (installé via Composer)config/nginx/: configuration Nginx pour le conteneur internebackup/: exports temporaires (dump MySQL, tar filestore)
4) Créer les fichiers de configuration Docker
4.1 Créer le docker-compose.yml
|
1 |
nano /home/docker/akeneo/docker-compose.yml |
Contenu :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
services: mysql: image: mysql:8.0.30 container_name: akeneo-mysql restart: always environment: MYSQL_ROOT_PASSWORD: AkeneoR00tPwd! MYSQL_DATABASE: akeneo_pim MYSQL_USER: akeneo_pim MYSQL_PASSWORD: akeneo_pim volumes: - akeneo-mysql-data:/var/lib/mysql command: ['--default-authentication-plugin=mysql_native_password'] networks: - akeneo-network elasticsearch: image: elastic/elasticsearch:8.4.2 container_name: akeneo-es restart: always environment: ES_JAVA_OPTS: '-Xms512m -Xmx512m' discovery.type: single-node xpack.security.enabled: 'false' xpack.security.http.ssl.enabled: 'false' volumes: - akeneo-es-data:/usr/share/elasticsearch/data networks: - akeneo-network php: image: akeneo/pim-php-dev:8.1 container_name: akeneo-php restart: always user: www-data volumes: - ./pim:/srv/pim working_dir: /srv/pim depends_on: - mysql - elasticsearch environment: APP_ENV: prod XDEBUG_MODE: 'off' PHP_MEMORY_LIMIT: 1024M networks: - akeneo-network nginx: image: nginx:1.25-alpine container_name: akeneo-nginx restart: always ports: - "127.0.0.1:8480:80" volumes: - ./pim/public:/srv/pim/public:ro - ./config/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - php networks: - akeneo-network job-worker: image: akeneo/pim-php-dev:8.1 container_name: akeneo-job restart: always user: www-data volumes: - ./pim:/srv/pim working_dir: /srv/pim command: ['php', 'bin/console', 'messenger:consume', 'main_queue', '--time-limit=300', '--memory-limit=1024M'] depends_on: - php - mysql - elasticsearch environment: APP_ENV: prod XDEBUG_MODE: 'off' networks: - akeneo-network volumes: akeneo-mysql-data: name: akeneo-mysql-data akeneo-es-data: name: akeneo-es-data networks: akeneo-network: name: akeneo-network |
Points clés :
mysql:8.0.30avecmysql_native_password(Akeneo ne supporte pas le nouveau plugin d’authentification MySQL 8)elastic/elasticsearch:8.4.2en mode single-node, sécurité désactivée (réseau Docker interne)akeneo/pim-php-dev:8.1pour PHP-FPM avec toutes les extensions requisesnginx:1.25-alpinecomme serveur web interne, exposé sur le port8480- job-worker : démon qui traite les imports/exports et tâches asynchrones. Le
--time-limit=300le redémarre toutes les 5 minutes (libère la mémoire) - Réseau et volumes complètement séparés d’Odoo
Image akeneo/pim-php-dev:8.1 : c’est l’image officielle Akeneo pour le développement.
Elle inclut toutes les extensions PHP requises (apcu, bcmath, imagick, intl, etc.). Pour la production,
Akeneo ne fournit pas d’image officielle. On désactive Xdebug via XDEBUG_MODE=off.
4.2 Créer la configuration Nginx interne
|
1 |
nano /home/docker/akeneo/config/nginx/default.conf |
Contenu :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
server { listen 80; server_name _; root /srv/pim/public; client_max_body_size 128M; location / { try_files $uri /index.php$is_args$args; } location ~ ^/index\.php(/|$) { fastcgi_pass php:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_read_timeout 600; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; internal; } location ~ \.php$ { return 404; } } |
Ce Nginx interne (dans Docker) proxie les requêtes PHP vers le conteneur php (FPM port 9000).
Le Nginx de MyVestaCP (sur l’hôte) proxie vers ce Nginx interne sur le port 8480.
C’est une architecture classique « double reverse proxy ».
5) Installer le code PIM 7 via Composer
On utilise l’image Docker PHP pour télécharger et installer PIM 7 sans rien installer sur l’hôte.
|
1 2 3 4 5 6 7 8 |
# Installer PIM 7 Community Edition via Composer # On monte le PARENT (/home/docker/akeneo) et on laisse Composer créer le sous-répertoire pim docker run -ti --rm \ -v /home/docker/akeneo:/srv/akeneo \ -w /srv/akeneo \ akeneo/pim-php-dev:8.1 \ php /usr/local/bin/composer create-project \ akeneo/pim-community-standard /srv/akeneo/pim "7.0.*@stable" |
Point de montage : ne pas monter directement /home/docker/akeneo/pim
comme volume — Composer a besoin de créer le répertoire cible lui-même.
On monte donc le répertoire parent et on laisse create-project
créer le sous-répertoire pim. La commande tourne en root
(pas -u www-data) pour éviter les erreurs de permission.
5.0.1 Corriger les permissions après installation
|
1 2 |
# Remettre la propriété à www-data (UID 33) pour les conteneurs PHP/Nginx chown -R 33:33 /home/docker/akeneo/pim |
Première exécution longue : Composer télécharge toutes les dépendances (~500 Mo).
Cette commande peut prendre 5-10 minutes selon la connexion.
Si elle échoue sur un timeout, relancer avec COMPOSER_PROCESS_TIMEOUT=600.
5.1 Créer le fichier .env.local
Ce fichier contient la configuration spécifique à notre environnement Docker.
Il surcharge les valeurs par défaut de .env.
|
1 |
nano /home/docker/akeneo/pim/.env.local |
Contenu :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
APP_ENV=prod APP_SECRET=ChangeThisToARandomSecretKey123 APP_DATABASE_HOST=mysql APP_DATABASE_PORT=3306 APP_DATABASE_NAME=akeneo_pim APP_DATABASE_USER=akeneo_pim APP_DATABASE_PASSWORD=akeneo_pim APP_INDEX_HOSTS=elasticsearch:9200 APP_PRODUCT_AND_PRODUCT_MODEL_INDEX_NAME=akeneo_pim_product_and_product_model APP_CONNECTION_ERROR_INDEX_NAME=akeneo_connectivity_connection_error APP_EVENTS_API_DEBUG_INDEX_NAME=akeneo_connectivity_connection_events_api_debug APP_ELASTICSEARCH_TOTAL_FIELDS_LIMIT=10000 AKENEO_PIM_URL=https://pim.mcdtoolbox.com MAILER_URL=null://localhost APP_DEFAULT_LOCALE=en APP_DEBUG=0 XDEBUG_MODE=off |
Différences avec PIM 6 :
APP_DATABASE_HOST pointe vers mysql (nom du service Docker, pas localhost).
APP_INDEX_HOSTS pointe vers elasticsearch:9200.
AKENEO_PIM_URL utilise https:// (après activation Let’s Encrypt).
5.2 Permissions
|
1 2 3 4 5 6 7 8 9 10 |
# Le code PIM doit appartenir à www-data (UID 33) sudo chown -R 33:33 /home/docker/akeneo/pim/ # docker-compose.yml : lecture root uniquement sudo chmod 600 /home/docker/akeneo/docker-compose.yml # Répertoires Docker : traversables sudo chmod 755 /home/docker/akeneo/ sudo chmod 755 /home/docker/akeneo/config/ sudo chmod 755 /home/docker/akeneo/config/nginx/ |
6) Préparer la base PIM 6 avant l’export
Avant d’exporter la base, il faut s’assurer que toutes les migrations PIM 6
ont été appliquées. On fait cela sur le VPS PIM 6.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Sur le VPS PIM (root@vps-3dce30a4) cd /home/pim-community-standard/ # Copier les fichiers de migration cp -R ./vendor/akeneo/pim-community-dev/upgrades/* ./upgrades/ # Vider le cache (en tant que root) rm -rf var/cache/* # Appliquer toutes les migrations PIM 6 en attente sudo -u www-data php bin/console doctrine:migrations:migrate --no-interaction # Reconstruire le cache (obligatoire après le nettoyage) sudo -u www-data php bin/console cache:clear --env=prod sudo -u www-data php bin/console cache:warmup --env=prod |
Permissions : le rm -rf var/cache/* doit être fait en root,
mais les commandes cache:clear et cache:warmup doivent être lancées
en tant que www-data (via sudo -u www-data), sinon le cache sera recréé
avec des permissions root et PIM 6 retournera une erreur 500 Internal Server Error au prochain redémarrage.
Si cela arrive, corriger avec : chown -R www-data:www-data /home/pim-community-standard/var/
Si doctrine:migrations:migrate affiche No migrations to execute,
c’est normal — cela signifie que la base PIM 6 est déjà à jour.
7) Exporter les données depuis le VPS PIM 6
Sur le VPS PIM (51.91.252.98), on exporte la base MySQL et le filestore.
7.1 Arrêter les workers PIM 6
|
1 2 3 4 5 |
# Sur le VPS PIM (ubuntu@vps-3dce30a4) # Arrêter les démons de queue pour éviter les modifications pendant l'export sudo supervisorctl stop all 2>/dev/null # Ou si pas de supervisord, trouver et arrêter les process PHP daemon ps aux | grep "messenger:consume\|job-queue" | grep -v grep |
7.2 Exporter la base MySQL
|
1 2 |
# Sur le VPS PIM mysqldump -u akeneo_pim -pakeneo_pim akeneo_pim | gzip > /home/ubuntu/akeneo-pim-db.sql.gz |
La base se nomme akeneo_pim, utilisateur akeneo_pim,
mot de passe akeneo_pim (tel que configuré dans le .env de PIM 6).
7.3 Exporter le filestore
|
1 2 3 |
# Sur le VPS PIM cd /home/pim-community-standard/ tar -czf /home/ubuntu/akeneo-pim-filestore.tar.gz var/file_storage/ |
7.4 Exporter le cache média (optionnel)
|
1 2 3 |
# Le cache média sera régénéré automatiquement, mais pour éviter d'attendre : cd /home/pim-community-standard/ tar -czf /home/ubuntu/akeneo-pim-media.tar.gz public/media/ 2>/dev/null |
8) Transférer les exports via rsync
Depuis le nouveau serveur (141.95.154.67), récupérer les archives :
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# Depuis le NOUVEAU serveur rsync -avz -e "ssh" \ ubuntu@51.91.252.98:/home/ubuntu/akeneo-pim-db.sql.gz \ /home/docker/akeneo/backup/ rsync -avz -e "ssh" \ ubuntu@51.91.252.98:/home/ubuntu/akeneo-pim-filestore.tar.gz \ /home/docker/akeneo/backup/ rsync -avz -e "ssh" \ ubuntu@51.91.252.98:/home/ubuntu/akeneo-pim-media.tar.gz \ /home/docker/akeneo/backup/ 2>/dev/null |
Le VPS PIM utilise le port SSH par défaut (22), donc pas besoin de -p.
Si une clé SSH n’est pas configurée, utiliser scp à la place.
9) Démarrer les services et restaurer la base
9.1 Démarrer MySQL et Elasticsearch
|
1 2 |
cd /home/docker/akeneo/ docker compose up -d mysql elasticsearch |
Attendre que MySQL soit prêt :
|
1 2 |
# Attendre ~15 secondes puis vérifier docker compose exec mysql mysqladmin ping -u akeneo_pim -pakeneo_pim |
Quand tu vois mysqld is alive, c’est prêt.
Vérifier Elasticsearch :
|
1 |
docker compose exec elasticsearch curl -s http://localhost:9200/_cluster/health | python3 -m json.tool |
Le status doit être green ou yellow.
9.2 Supprimer la base vide et restaurer le dump PIM 6
|
1 2 3 4 5 6 7 |
# Supprimer la base créée automatiquement par Docker docker compose exec mysql mysql -u root -pAkeneoR00tPwd! \ -e "DROP DATABASE akeneo_pim; CREATE DATABASE akeneo_pim DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # Restaurer le dump PIM 6 gunzip -c /home/docker/akeneo/backup/akeneo-pim-db.sql.gz | \ docker compose exec -T mysql mysql -u akeneo_pim -pakeneo_pim akeneo_pim |
Attention : la restauration peut prendre plusieurs minutes selon la taille de la base.
Ne pas interrompre le processus.
9.3 Restaurer le filestore
|
1 2 3 4 5 6 7 8 9 10 11 |
# Extraire le filestore dans le répertoire PIM tar -xzf /home/docker/akeneo/backup/akeneo-pim-filestore.tar.gz \ -C /home/docker/akeneo/pim/ # Restaurer le cache média (si exporté) tar -xzf /home/docker/akeneo/backup/akeneo-pim-media.tar.gz \ -C /home/docker/akeneo/pim/ 2>/dev/null # Corriger les permissions sudo chown -R 33:33 /home/docker/akeneo/pim/var/ sudo chown -R 33:33 /home/docker/akeneo/pim/public/media/ 2>/dev/null |
10) Exécuter la migration PIM 6.0 → 7.0
Maintenant que la base PIM 6 est restaurée dans le conteneur MySQL et que le code PIM 7
est installé, on peut exécuter les migrations Doctrine pour upgrader le schéma.
10.1 Démarrer le conteneur PHP
|
1 2 |
cd /home/docker/akeneo/ docker compose up -d php |
10.2 Vider le cache
|
1 |
docker compose exec -u www-data php rm -rf var/cache/ |
10.3 Exécuter les migrations Doctrine
|
1 |
docker compose exec -u www-data php php bin/console doctrine:migrations:migrate --no-interaction |
Migration longue : cette commande applique toutes les migrations de schéma
entre PIM 6.0 et PIM 7.0. Elle peut prendre plusieurs minutes.
Des warnings sur des « previously executed migrations » peuvent apparaître — c’est normal.
10.4 Migrations de données complémentaires
|
1 2 3 |
# Mettre à jour les scores de qualité des données docker compose exec -u www-data php php bin/console \ pim:data-quality-insights:populate-product-models-scores-and-ki |
11) Réindexer Elasticsearch et compiler les assets
11.1 Réindexer Elasticsearch
|
1 2 3 4 5 6 7 8 |
# Réinitialiser les index (PIM 7 utilise ES 8.4.2, structure différente) docker compose exec -u www-data php php bin/console akeneo:elasticsearch:reset-indexes # Réindexer tous les produits docker compose exec -u www-data php php bin/console pim:product:index --all # Réindexer les modèles de produits docker compose exec -u www-data php php bin/console pim:product-model:index --all |
La réindexation peut prendre du temps si tu as beaucoup de produits.
C’est normal — Elasticsearch reconstruit tout l’index depuis MySQL.
11.2 Compiler les assets frontend
|
1 2 3 4 5 6 7 |
# Utiliser l'image Node pour compiler le frontend PIM 7 docker run -ti --rm \ -v /home/docker/akeneo/pim:/srv/pim \ -w /srv/pim \ --network akeneo-network \ akeneo/node:18 \ bash -c "yarn install && yarn run less && yarn run webpack" |
Compilation longue : le build frontend (webpack) peut prendre 5-15 minutes
et consomme beaucoup de RAM. C’est une opération unique (pas besoin de le refaire à chaque redémarrage).
11.3 Vider le cache Symfony
|
1 |
docker compose exec -u www-data php php bin/console cache:clear --env=prod |
12) Démarrer tous les services
|
1 2 |
cd /home/docker/akeneo/ docker compose up -d |
Vérifier l’état de tous les conteneurs :
|
1 |
docker compose ps |
Les 5 conteneurs doivent être en état Up :
akeneo-mysqlakeneo-esakeneo-phpakeneo-nginxakeneo-job
Consulter les logs en cas d’erreur :
|
1 2 3 |
docker compose logs php docker compose logs nginx docker compose logs job-worker |
13) Tester localement (avant le DNS)
|
1 |
curl -I http://127.0.0.1:8480 |
La commande doit retourner HTTP/1.1 302 Found avec un header Location
pointant vers /user/login. Cela confirme que PIM 7 fonctionne.
Identifiants par défaut PIM : admin / admin.
Si tu as changé le mot de passe dans PIM 6, les anciens identifiants sont conservés après la migration.
14) Basculer les enregistrements DNS
Créer (ou modifier) l’enregistrement A chez le registrar :
| Sous-domaine | Type | Cible |
|---|---|---|
pim.mcdtoolbox.com |
A | 141.95.154.67 |
Vérifier la propagation :
|
1 2 |
nslookup pim.mcdtoolbox.com dig +short pim.mcdtoolbox.com |
15) Activer Let’s Encrypt
|
1 |
/usr/local/vesta/bin/v-add-letsencrypt-domain admin pim.mcdtoolbox.com |
Important : attendre que le DNS pointe vers 141.95.154.67 avant de lancer
cette commande. Let’s Encrypt valide via HTTP.
16) Configurer les crons PIM
PIM 7 nécessite des tâches cron pour la maintenance. Les ajouter à la crontab du serveur :
|
1 |
crontab -e |
Ajouter :
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# Akeneo PIM 7 - Crons # Lancer les tâches planifiées toutes les minutes * * * * * docker exec -u www-data akeneo-php php /srv/pim/bin/console akeneo:batch:publish-job-to-queue --env=prod 2>&1 | logger -t akeneo-cron # Purger les anciens jobs (tous les jours à 2h) 0 2 * * * docker exec -u www-data akeneo-php php /srv/pim/bin/console akeneo:batch:purge-job-execution --days=90 --env=prod 2>&1 | logger -t akeneo-cron # Rafraîchir les complétions de produits (toutes les heures) 0 * * * * docker exec -u www-data akeneo-php php /srv/pim/bin/console pim:completeness:calculate --env=prod 2>&1 | logger -t akeneo-cron # Rafraîchir les assets du canal (toutes les heures) 30 * * * * docker exec -u www-data akeneo-php php /srv/pim/bin/console pim:versioning:refresh --env=prod 2>&1 | logger -t akeneo-cron |
Récapitulatif de l’architecture finale
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
MyVestaCP (proxy + SSL) Docker (application) ——————————————— —————————— /home/admin/web/ /home/docker/akeneo/ └── pim.mcdtoolbox.com/ ├── docker-compose.yml └── Nginx → 127.0.0.1:8480 ├── pim/ (code PIM 7) ├── config/nginx/ (vhost interne) └── backup/ Docker Compose services (5 conteneurs) : - akeneo-mysql (MySQL 8.0.30) - akeneo-es (Elasticsearch 8.4.2) - akeneo-php (PHP 8.1 FPM) - akeneo-nginx (Nginx 1.25) - akeneo-job (Job Worker / Queue Consumer) |
Coexistence sur le serveur : Akeneo PIM, Odoo 8 et Odoo 17 tournent sur le même
serveur, complètement isolés dans leurs réseaux Docker respectifs :
akeneo-network: MySQL 8.0.30 + ES 8.4.2 + PHP + Nginx + Job Worker (port 8480)odoo17-network: PostgreSQL 13 + Odoo 17 (ports 8069/8169/8269/8369)odoo8-network: PostgreSQL 9.6 + Odoo 8 (ports 8469/8472)
En cas de problème
Erreur 502 Bad Gateway
Le conteneur PHP-FPM n’est pas prêt ou a crashé :
|
1 2 |
docker compose logs php docker compose restart php nginx |
Erreur « Connection refused » sur Elasticsearch
Elasticsearch n’a pas démarré (souvent un problème de mémoire ou de vm.max_map_count) :
|
1 2 3 4 5 6 7 |
# Vérifier les logs docker compose logs elasticsearch # Si erreur max_map_count, exécuter sur l'hôte : sudo sysctl -w vm.max_map_count=262144 # Et pour le rendre permanent : echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf |
Erreur de permission sur le filestore
|
1 2 3 |
sudo chown -R 33:33 /home/docker/akeneo/pim/var/ sudo chown -R 33:33 /home/docker/akeneo/pim/public/media/ docker compose restart php |
À suivre
Akeneo PIM 7 est maintenant opérationnel en Docker avec reverse proxy et SSL.
Dans les prochains articles :
- ownCloud — migration des données et Docker Compose
- Serveurs de jeux — CS 1.6, TeamSpeak 3, EmuLinker
- Sauvegardes — stratégie et automatisation (Borg, rsync, snapshots)
0 commentaire