docker.recipes

Akeneo PIM

advanced

Product Information Management for e-commerce.

Overview

Akeneo PIM (Product Information Management) is an open-source platform designed to centralize, manage, and enrich product data for e-commerce businesses. Founded in 2013, Akeneo has become a leading solution for companies struggling with scattered product information across multiple systems, channels, and languages. The platform excels at creating a single source of truth for product catalogs, managing complex attribute structures, handling multilingual content, and facilitating collaboration between marketing, merchandising, and technical teams. This Docker stack combines Akeneo PIM with MySQL 8.0 for robust relational data storage and Elasticsearch 7.17 for powerful search and indexing capabilities. MySQL handles the core PIM data including product attributes, categories, user permissions, and system configurations, while Elasticsearch provides fast full-text search across product catalogs, faceted navigation, and real-time indexing of product updates. This architecture enables Akeneo to deliver sub-second search responses even with catalogs containing hundreds of thousands of SKUs. This configuration is ideal for mid-to-large e-commerce businesses, retailers with complex product catalogs, and organizations managing multi-brand or multi-regional product portfolios. Companies dealing with rich product data like fashion retailers, electronics distributors, or B2B manufacturers will benefit most from Akeneo's advanced attribute management, media handling, and channel-specific product variations. The stack supports enterprise workflows including product approval processes, automated data quality rules, and API-driven integrations with existing ERP and e-commerce systems.

Key Features

  • Advanced product attribute management with support for text, number, date, media, and custom attribute types
  • Multi-channel publishing with channel-specific product variations, pricing, and availability rules
  • Built-in Digital Asset Management (DAM) for organizing product images, videos, and documents
  • Elasticsearch-powered product search with faceted filtering, relevance scoring, and instant results
  • MySQL 8.0 InnoDB storage with ACID compliance ensuring data consistency during bulk imports and updates
  • RESTful and GraphQL APIs for integrating with e-commerce platforms like Magento, Shopify, and custom systems
  • Multi-locale support with translation workflows and locale-specific product information management
  • Data quality management with automated validation rules, completeness tracking, and quality scoring

Common Use Cases

  • 1Fashion and apparel retailers managing seasonal collections with size, color, and style variations across multiple brands
  • 2Electronics distributors centralizing technical specifications, compatibility matrices, and multilingual product documentation
  • 3B2B manufacturers providing different product catalogs and pricing structures for various customer segments and regions
  • 4Multi-brand retailers maintaining consistent product data across owned brands while preserving brand-specific attributes
  • 5International e-commerce companies managing product localization for different markets and regulatory requirements
  • 6Marketplace sellers consolidating product information from multiple suppliers into standardized catalog formats
  • 7Omnichannel retailers synchronizing product data between online stores, mobile apps, print catalogs, and physical locations

Prerequisites

  • Minimum 4GB RAM recommended due to Elasticsearch memory requirements and Akeneo's resource-intensive operations
  • Docker and Docker Compose installed with sufficient disk space for product media assets and search indices
  • Port 8080 available for Akeneo web interface access
  • Understanding of product information management concepts including attributes, families, categories, and channels
  • Basic knowledge of MySQL database administration for backup, optimization, and user management tasks
  • Familiarity with Elasticsearch concepts for search configuration and index management

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 akeneo:
3 image: akeneo/pim-community-dev:latest
4 container_name: akeneo
5 restart: unless-stopped
6 environment:
7 APP_ENV: prod
8 DATABASE_URL: mysql://${DB_USER}:${DB_PASSWORD}@mysql:3306/${DB_NAME}
9 volumes:
10 - akeneo_var:/srv/pim/var
11 ports:
12 - "8080:80"
13 depends_on:
14 - mysql
15 - elasticsearch
16 networks:
17 - akeneo
18
19 mysql:
20 image: mysql:8.0
21 container_name: akeneo-mysql
22 environment:
23 MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
24 MYSQL_DATABASE: ${DB_NAME}
25 MYSQL_USER: ${DB_USER}
26 MYSQL_PASSWORD: ${DB_PASSWORD}
27 volumes:
28 - mysql_data:/var/lib/mysql
29 networks:
30 - akeneo
31
32 elasticsearch:
33 image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
34 container_name: akeneo-es
35 environment:
36 - discovery.type=single-node
37 volumes:
38 - es_data:/usr/share/elasticsearch/data
39 networks:
40 - akeneo
41
42volumes:
43 akeneo_var:
44 mysql_data:
45 es_data:
46
47networks:
48 akeneo:
49 driver: bridge

.env Template

.env
1DB_ROOT_PASSWORD=rootpassword
2DB_NAME=akeneo
3DB_USER=akeneo
4DB_PASSWORD=changeme

Usage Notes

  1. 1Docs: https://docs.akeneo.com/
  2. 2Access at http://localhost:8080 - resource intensive (4GB+ RAM)
  3. 3Product Information Management for multi-channel e-commerce
  4. 4Centralize product data: attributes, categories, media, translations
  5. 5Connect to e-commerce platforms via connectors (Magento, Shopify)
  6. 6Enterprise features: workflows, assets DAM, API rate limits

Individual Services(3 services)

Copy individual services to mix and match with your existing compose files.

akeneo
akeneo:
  image: akeneo/pim-community-dev:latest
  container_name: akeneo
  restart: unless-stopped
  environment:
    APP_ENV: prod
    DATABASE_URL: mysql://${DB_USER}:${DB_PASSWORD}@mysql:3306/${DB_NAME}
  volumes:
    - akeneo_var:/srv/pim/var
  ports:
    - "8080:80"
  depends_on:
    - mysql
    - elasticsearch
  networks:
    - akeneo
mysql
mysql:
  image: mysql:8.0
  container_name: akeneo-mysql
  environment:
    MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
    MYSQL_DATABASE: ${DB_NAME}
    MYSQL_USER: ${DB_USER}
    MYSQL_PASSWORD: ${DB_PASSWORD}
  volumes:
    - mysql_data:/var/lib/mysql
  networks:
    - akeneo
elasticsearch
elasticsearch:
  image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
  container_name: akeneo-es
  environment:
    - discovery.type=single-node
  volumes:
    - es_data:/usr/share/elasticsearch/data
  networks:
    - akeneo

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 akeneo:
5 image: akeneo/pim-community-dev:latest
6 container_name: akeneo
7 restart: unless-stopped
8 environment:
9 APP_ENV: prod
10 DATABASE_URL: mysql://${DB_USER}:${DB_PASSWORD}@mysql:3306/${DB_NAME}
11 volumes:
12 - akeneo_var:/srv/pim/var
13 ports:
14 - "8080:80"
15 depends_on:
16 - mysql
17 - elasticsearch
18 networks:
19 - akeneo
20
21 mysql:
22 image: mysql:8.0
23 container_name: akeneo-mysql
24 environment:
25 MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
26 MYSQL_DATABASE: ${DB_NAME}
27 MYSQL_USER: ${DB_USER}
28 MYSQL_PASSWORD: ${DB_PASSWORD}
29 volumes:
30 - mysql_data:/var/lib/mysql
31 networks:
32 - akeneo
33
34 elasticsearch:
35 image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
36 container_name: akeneo-es
37 environment:
38 - discovery.type=single-node
39 volumes:
40 - es_data:/usr/share/elasticsearch/data
41 networks:
42 - akeneo
43
44volumes:
45 akeneo_var:
46 mysql_data:
47 es_data:
48
49networks:
50 akeneo:
51 driver: bridge
52EOF
53
54# 2. Create the .env file
55cat > .env << 'EOF'
56DB_ROOT_PASSWORD=rootpassword
57DB_NAME=akeneo
58DB_USER=akeneo
59DB_PASSWORD=changeme
60EOF
61
62# 3. Start the services
63docker compose up -d
64
65# 4. View logs
66docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/akeneo/run | bash

Troubleshooting

  • Elasticsearch bootstrap check failures on startup: Increase vm.max_map_count with 'sudo sysctl -w vm.max_map_count=262144' on Docker host
  • Akeneo shows database connection errors: Verify MySQL container is fully started and DATABASE_URL environment variable matches MySQL credentials exactly
  • Product search returns no results after data import: Check Elasticsearch indices are properly created by running Akeneo's search index rebuild command
  • Akeneo web interface loads slowly or times out: Increase PHP memory limits and ensure adequate system resources, consider adjusting MySQL query cache settings
  • File upload errors for product images: Verify akeneo_var volume has sufficient space and proper permissions for web server write access
  • MySQL container fails to start with data directory errors: Remove mysql_data volume and restart to initialize fresh database, then restore from backup

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space