This guide provides simple, minimal steps for users to evaluate various e-commerce platforms using simple Docker commands.
This repository maintains custom evaluation images for platforms lacking lightweight, single-container community alternatives, while leveraging robust existing configurations where available:
| # | Platform | Target Docker Image Tag / Source | Image Type | Architectural Rationale / Why |
|---|---|---|---|---|
| 1 | WooCommerce | acromedia/ecommerce:woocommerce |
Custom Built | No active official standalone image exists. Built via Composer and WPackagist to inject the plugin safely into an official WordPress base image at build time. |
| 2 | OpenCart | acromedia/ecommerce:opencart |
Custom Built | Official Bitnami images are deprecated. Built with dynamic directory discovery to handle changing .zip structures across official releases resiliently. |
| 3 | Shopware | dockware/shopware:latest |
Community | Leverages the highly trusted community dockware image, which includes an embedded database footprint out of the box for zero-config run loops. |
| 4 | SpreeCommerce | acromedia/ecommerce:spree |
Custom Built | The official cloud-ready image requires active external Postgres and Redis clusters to build. This image uses Ruby 4.x and a standalone SQLite profile. |
| 5 | Saleor | ghcr.io/saleor/saleor:latest |
Official | Well-maintained official core API engine. This guide provisions a direct datastore link and bootstraps schema creation at execution runtime. |
| 6 | Medusa | acromedia/ecommerce:medusa |
Custom Built | The official startup workflows force multi-container Docker Compose. This image pre-scaffolds the Node workspace cleanly for a lightweight startup loop. |
| 7 | Drupal Commerce | insready/drupal-commerce:11 |
Custom Built | Leverages your production-grade baseline layout container optimizing modern dependency caching layers and Drupal 11 core. |
# 1. Start Database
docker run -d --name woo-db -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=wordpress mysql:lts
# 2. Start WooCommerce
docker run -d -p 8080:80 --name woocommerce --link woo-db:mysql -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=secret acromedia/ecommerce:woocommerceAccess URL: http://localhost:8080 Note: Complete the basic WordPress screen wizard; WooCommerce will be waiting for activation inside the 'Plugins' menu.
# 1. Start Database
docker run -d --name opencart-db -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=opencart mysql:lts
# 2. Start OpenCart
docker run -d -p 8080:80 --name opencart --link opencart-db:mysql acromedia/ecommerce:opencartAccess URL: http://localhost:8080
Note: Follow the graphical web installer steps using: Database Host: mysql, User: root, Password: secret.
Uses a fully standalone image built by the community that includes an embedded database out of the box.
docker run -d -p 8080:80 --name shopware dockware/shopware:latestAccess URL: http://localhost:8080
Admin Panel: http://localhost:8080/admin (User: admin / Pass: shopware)
A completely self-contained Ruby on Rails engine setup utilizing an internal SQLite profile for instant preview.
# 1. Start Backing Postgres Database
docker run -d --name spree-db -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=spree_development postgres
# 2. Start Spree Engine linked to the Database
docker run -d -p 3000:3000 --name spree --link spree-db:db -e DATABASE_URL=postgresql://postgres:secret@db:5432/spree_development acromedia/ecommerce:spreeAccess URL: http://localhost:3000
Admin Panel: http://localhost:3000/admin (User: spree@example.com / Pass: spree123)
Launches the official Saleor Core engine. Note that this spins up the backend GraphQL API playground directly.
# 1. Start Database
docker run -d --name saleor-db -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=saleor postgres
# 2. Run Migrations & Start Saleor Core API
docker run -it -p 8000:8000 --name saleor --link saleor-db:db -e DATABASE_URL=postgres://postgres:secret@db:5432/saleor ghcr.io/saleor/saleor:latest sh -c "python manage.py migrate && python manage.py populatedb && python manage.py runserver 0.0.0.0:8000"Access URL: http://localhost:8000/graphql/
An open-source headless engine paired alongside a standard datastore container.
# 1. Start Backing Database (Open Port 9000 to get around with Medusa v2 bug)
docker run -d --name postgres -p 9000:9000 -e POSTGRES_PASSWORD=secret -e POSTGRES_DB=medusa postgres
# 2. Medusa attaches directly inside postgres's network using 127.0.0.1
docker run -d --name medusa --network=container:postgres \
-e DATABASE_URL="postgres://postgres:secret@127.0.0.1:5432/medusa" \
acromedia/ecommerce:medusa \
sh -c "echo \"DATABASE_URL=\$DATABASE_URL\" > .env && npx medusa db:migrate && yarn seed && yarn start"Access URL: http://localhost:9000/health
Evaluates Drupal Commerce using a pre-packaged optimization layer image.
# 1. Start Database
docker run -d --name drupal-db -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=drupal mysql:lts
# 2. Start Drupal Commerce Container
docker run -d -p 8080:80 --name drupal-commerce --link drupal-db:mysql insready/drupal-commerce:11-devAccess URL: http://localhost:8080