Shopware is a trendsetting ecommerce platform to power your online business. Our ecommerce solution offers the perfect combination of beauty & brains you need to build and customize a fully responsive online store.
To run Shopware 6 you will need a compatible MySQL or MariaDB container.
Smallest example with docker-compose
version: "3.8"
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: shopware
MYSQL_USER: shopware
MYSQL_PASSWORD: shopware
shopware:
image: shyim/shopware:6.4.20-php8.2
environment:
APP_SECRET: 440dec3766de53010c5ccf6231c182acfc90bd25cff82e771245f736fd276518
INSTANCE_ID: 10612e3916e153dd3447850e944a03fabe89440970295447a30a75b151bd844e
APP_URL: http://localhost
BLUE_GREEN_DEPLOYMENT: 0
DATABASE_HOST: mysql
DATABASE_PORT: 3306
DATABASE_URL: mysql://shopware:shopware@mysql:3306/shopware
ports:
- 80:80
The installation will be accessible at http://localhost
. The default credentials for the administration are admin
and shopware
as password.
Following environment can be set:
Variable | Default Value | Description |
---|---|---|
APP_ENV | prod | Environment |
APP_SECRET | (empty) | Can be generated with openssl rand -hex 32 |
APP_URL | (empty) | Where Shopware will be accessible |
INSTANCE_ID | (empty) | Unique Identifier for the Store: Can be generated with openssl rand -hex 32 |
DATABASE_HOST | (empty) | Host of MySQL (needed for for checking is MySQL alive) |
DATABASE_PORT | (empty) | Host of MySQL (needed for for checking is MySQL alive) |
BLUE_GREEN_DEPLOYMENT | 1 | This needs super priviledge to create trigger |
DATABASE_URL | (empty) | MySQL credentials as DSN |
DATABASE_SSL_CA | (empty) | Path to SSL CA file (needs to be readable for uid 1000) |
DATABASE_SSL_CERT | (empty) | Path to SSL Cert file (needs to be readable for uid 1000) |
DATABASE_SSL_KEY | (empty) | Path to SSL Key file (needs to be readable for uid 1000) |
DATABASE_SSL_DONT_VERIFY_SERVER_CERT | (empty) | Disables verification of the server certificate (1 disables it) |
MAILER_URL | null://localhost | Mailer DSN (Admin Configuration overwrites this) |
SHOPWARE_ES_HOSTS | (empty) | Elasticsearch Hosts |
SHOPWARE_ES_ENABLED | 0 | Elasticsearch Support Enabled? |
SHOPWARE_ES_INDEXING_ENABLED | 0 | Elasticsearch Indexing Enabled? |
SHOPWARE_ES_INDEX_PREFIX | (empty) | Elasticsearch Index Prefix |
COMPOSER_HOME | /tmp/composer | Caching for the Plugin Manager |
SHOPWARE_HTTP_CACHE_ENABLED | 1 | Is HTTP Cache enabled? |
SHOPWARE_HTTP_DEFAULT_TTL | 7200 | Default TTL for Http Cache |
SHOPWARE_AUTOMATICALLY_EMPTY_CACHE_ENABLED | false | Empty cache automatically. See Caches & Indexes > Empty cache automatically |
SHOPWARE_EMPTY_CACHE_INTERVAL | 86400 (24 hours) | Interval with which to clear the cache in seconds. |
DISABLE_ADMIN_WORKER | false | Disables the admin worker |
INSTALL_LOCALE | en-GB | Default locale for the Shop |
INSTALL_CURRENCY | EUR | Default currency for the Shop |
INSTALL_ADMIN_USERNAME | admin | Default admin username |
INSTALL_ADMIN_PASSWORD | shopware | Default admin password |
CACHE_ADAPTER | default | Set this to redis to enable redis caching |
REDIS_CACHE_HOST | redis | Host for redis caching |
REDIS_CACHE_PORT | 6379 | Redis cache port |
REDIS_CACHE_DATABASE | 0 | Redis database index |
SESSION_ADAPTER | default | Set this to redis to enable redis session adapter |
REDIS_SESSION_HOST | redis | Host for redis session |
REDIS_SESSION_PORT | 6379 | Redis session port |
REDIS_SESSION_DATABASE | 0 | Redis session index |
ACTIVE_PLUGINS | (empty) | A list of plugins which should be installed and updated |
TZ | Europe/Berlin | PHP default timezone |
PHP_MAX_UPLOAD_SIZE | 128m | See php documentation |
PHP_MAX_EXECUTION_TIME | 300 | See php documentation |
PHP_MEMORY_LIMIT | 512m | See php documentation |
FPM_PM | dynamic | See php fpm documentation |
FPM_PM_MAX_CHILDREN | 5 | See php fpm documentation |
FPM_PM_START_SERVERS | 2 | See php fpm documentation |
FPM_PM_MIN_SPARE_SERVERS | 1 | See php fpm documentation |
FPM_PM_MAX_SPARE_SERVERS | 3 | See php fpm documentation |
When Shopware with SSL behind a reverse proxy such as NGINX which is responsible for doing TLS termination, be sure configure Trusted Headers.
When you update the image version, automatically all required migrations will run. Downgrade works in a similar way. Please check before here the Blue-Green compatibility of Shopware.
See docker-compose-advanced.yml
for a full docker-compose example.
- The container will check is Shopware installed and install or update it (and execute hooks).
- Will start Web server
command: ['default']
- Will start Web server
command: ['web']
- The container will check is Shopware installed and install or update it (and execute hooks).
command: ['maintenance']
- Allows to run cli commands like message consumer and other tasks
command: ['cli', 'symfony:command', 'arg1', 'arg2']
Path | Description |
---|---|
/state | Contains state about current installed version. |
/var/www/html/custom/plugins | Installed plugins |
/var/www/html/files | Documents and other private files |
/var/www/html/var/log | Logs |
/var/www/html/public/theme | Compiled theme files |
/var/www/html/public/media | Uploaded files |
/var/www/html/public/bundles | Bundle Assets |
/var/www/html/public/sitemap | Sitemap |
/var/www/html/public/thumbnail | Generated Thumbnails |
/var/www/html/config/jwt | JWT Certificate for API |
- /state
- The state can be ignored by having a
INSTALLED_SHOPWARE_VERSION
environment variable with the current used Shopware version. This will be used to detect if database migrations needs to be executed.
- The state can be ignored by having a
- /config/jwt
- In Kubernetes you can mount a secretmap to this location with your certificates
- /public/*
- Use external storage adapter, see Shopware documentation
- To run script on installation, add a new file to
/etc/shopware/scripts/on-install/xx.sh
- To run script on update, add a new file to
/etc/shopware/scripts/on-update/xx.sh
- To run script on startup, add a new file to
/etc/shopware/scripts/on-startup/xx.sh
FROM shyim/shopware:6.4
# Add repository
RUN jq '.repositories += [{"type": "composer","url": "https://packages.shopware.com/","options": {"http": {"header": ["Token: MyToken"]}}}]' /var/www/html/composer.json > /var/www/html/composer2.json && \
cp composer2.json composer.json && \
chown 1000:1000 composer.json
RUN sudo -E -u www-data composer require store.shopware.com/swagcmsextensions