Shopware 6 development images
50K+
Shopware 6 development image based on netinventors/php-base.
At the first start Shopware is installed automatically, including database, admin user, storefront sales channel
and compiled assets.
| Tag | Content |
|---|---|
<shopware-version>, latest | All PHP versions of the base image, PHP 8.2 is the default |
<shopware-version>-php<X.Y>, latest-php<X.Y> | Only PHP <X.Y> (smaller image), e.g. 6.7.16.0-php8.4 |
Currently maintained Shopware versions are 6.6 and 6.7, each with PHP 8.2, 8.3, 8.4 and 8.5. Tags of older Shopware versions are still available, but are no longer updated.
The versions below refer to the images based on netinventors/php-base 1.5.0.
-php<X.Y> suffix)
ENABLE_XDEBUG)n 11.0.0)Shopware 6.6 and 6.7 require at least PHP 8.2.
bat alias for the web user)| Port | Service | Exposed |
|---|---|---|
| 22 | SSH | yes |
| 80 | HTTP | yes |
| 443 | HTTPS (self-signed certificate for localhost) | yes |
| 3306 | MariaDB | yes |
| 6379 | Redis | no |
| 8080 | Administration watcher (PORT) | no |
| 9998 | Storefront watcher (STOREFRONT_PROXY_PORT) | no |
Ports that are not exposed have to be published explicitly, e.g. -p 8080:8080 -p 9998:9998 for the watchers.
The container health check requests http://127.0.0.1/ping.
All described environment variables are displayed with their default values.
| Variable name | Default value |
|---|---|
| TZ | Europe/Berlin |
The web user is created at the first container start. The user belongs to the group www-data,
runs Apache, the Shopware workers and the installation, and can log in via SSH.
| Variable name | Default value |
|---|---|
| WEB_USER_UID | 1000 |
| WEB_USER_USERNAME | "netinventors" |
| WEB_USER_PASSWORD | "athene" |
At each start the ownership and permissions of the cache, log, backup and Redis directories are fixed.
| Variable name | Default value | Possible values | Description |
|---|---|---|---|
| SKIP_PERMISSION_FIXER | "false" |
| Skips the permission fixer completely |
| SKIP_HTML_PERMISSION_FIXER | "true" |
| Skips the ownership fix of /var/www/html |
The currently available PHP versions are:
The tags with a -php<X.Y> suffix only contain one PHP version, which is also the default value of PHP_VERSION.
| Variable name | Default value | Possible values |
|---|---|---|
| PHP_INI_SCAN_DIR | ":/usr/local/etc/php/cli/conf.d" | |
| APACHE_PHP_INI_SCAN_DIR | ":/usr/local/etc/php/apache2/conf.d" | |
| PHP_VERSION | 8.2 |
|
| ENABLE_XDEBUG | "true" |
|
The leading : keeps the default scan directory of the PHP version and adds the given directory.
The Apache PHP configuration contains these Shopware specific settings:
| Setting | Value |
|---|---|
| memory_limit | 512M |
| max_execution_time | 30 |
| post_max_size | 25M |
| upload_max_filesize | 25M |
| opcache.interned_strings_buffer | 20 |
| realpath_cache_ttl | 3600 |
| zend.assertions | -1 |
| Variable name | Default value | Possible values |
|---|---|---|
| COMPOSER_HOME | /usr/local/share/composer | |
| COMPOSER_VERSION | 2 |
|
| UPDATE_COMPOSER | "false" |
|
Both versions are available as composer-1 and composer-2, composer links to the selected one.
| Variable name | Default value | Possible values |
|---|---|---|
| NODE_VERSION | 24.22.2 | |
| NPM_VERSION | 11.19.1 | |
| UPDATE_NODE | "false" |
|
| UPDATE_NPM | "false" |
|
| UPDATE_N | "false" |
|
If NODE_VERSION or NPM_VERSION differs from the preinstalled version, the requested version is installed at
container start (internet access required). NODE_VERSION accepts every version n understands, e.g. 22 or lts.
The value -1 skips the installation.
| Variable name | Default value | Possible values | Description |
|---|---|---|---|
| SHOPWARE_AUTO_INSTALL | "true" |
| Installs Shopware at start if install.lock is missing |
| SHOPWARE_FORCE_INSTALL | "false" |
| Reinstalls Shopware at every start, see below |
| SHOPWARE_SHOP_URL | "https://localhost" | APP_URL and storefront domains (HTTP and HTTPS) | |
| SHOPWARE_SHOP_NAME | "Development-Shop" | ||
| SHOPWARE_SHOP_EMAIL | "no-reply@localhost" | ||
| SHOPWARE_SHOP_LOCALE | "de-DE" | ||
| SHOPWARE_SHOP_CURRENCY | "EUR" | ||
| SHOPWARE_ADMIN_USERNAME | "admin" | ||
| SHOPWARE_ADMIN_PASSSWORD | "shopware" | Three "S" in the name | |
| SHOPWARE_ADMIN_EMAIL | "admin@localhost" | ||
| SHOPWARE_ADMIN_FIRSTNAME | "David" | ||
| SHOPWARE_ADMIN_LASTNAME | "Lightman" | ||
| SHOPWARE_FIRST_RUN_WIZARD | "false" |
| |
| APP_DEBUG | 0 |
| |
| HOST | 0.0.0.0 | Administration watcher host | |
| PORT | 8080 | Administration watcher port | |
| STOREFRONT_PROXY_PORT | 9998 | Storefront watcher port | |
| DISABLE_ADMIN_COMPILATION_TYPECHECK | "true" |
| |
| SHOPWARE_ADMIN_BUILD_ONLY_EXTENSIONS | "true" |
| |
| PUPPETEER_SKIP_CHROMIUM_DOWNLOAD | "true" |
| Puppeteer < 22 |
| PUPPETEER_SKIP_DOWNLOAD | "true" |
| Puppeteer >= 19 |
SHOPWARE_FORCE_INSTALL="true" drops the database and overwrites the files in /var/www/html at every start.
The installation runs at container start. Meanwhile a preview page is shown on port 80 and 443.
If MYSQL_HOST is localhost or 127.0.0.1 a local MariaDB server instance will be started automatically and the
user and database are created during the installation. For an external server the user must already exist.
| Variable name | Default value |
|---|---|
| MYSQL_HOST | "localhost" |
| MYSQL_PORT | "3306" |
| MYSQL_USER | "netinventors" |
| MYSQL_PASSWORD | "athene" |
| MYSQL_DATABASE | "shopware" |
If ENABLE_REDIS is "true", the Redis configurations of Shopware are enabled (cache, session, lock, cart, number
range, increment and message queue). If REDIS_HOST is localhost or 127.0.0.1 a local Redis server is started
as well. With ENABLE_REDIS set to "false" the Redis configurations are disabled during the installation.
| Variable name | Default value |
|---|---|
| ENABLE_REDIS | "false" |
| REDIS_HOST | "localhost" |
| REDIS_PORT | "6379" |
| REDIS_PASSWORD | "shopware" |
| REDIS_DATABASE | 0 |
The local Redis server is configured with REDIS_PORT and REDIS_PASSWORD at every container start.
The installation runs the following steps. For each step a Taskfile with a execute task
can be placed in /docker-entrypoint-install.d as pre-<step>.yml or post-<step>.yml, e.g.
post-install-shopware.yml. Taskfiles run as web user.
| Step | Description |
|---|---|
| start-mysql | Starts the local MariaDB server |
| create-mysql-user | Creates the database and the user on the local MariaDB server |
| copy-sources | Copies the Shopware sources to /var/www/html |
| install-shopware | Installs Shopware, creates the admin user and the storefront |
| install-plugins | Installs the plugins listed in plugins.json |
| stop-mysql | Stops the MariaDB server, it is started again by supervisor |
Example of a plugins.json, the keys are the plugin names, the values the Composer requirements:
{
"plugins": {
"FroshTools": "frosh/tools:^3.0",
"FroshPlatformMailArchive": "frosh/mail-platform-archive"
}
}
The installation can be repeated manually with install-shopware.sh -f as root.
Supervisor runs the following processes:
MYSQL_HOST)ENABLE_REDIS="true" and local REDIS_HOST)async and failed)The logs of the Shopware processes are written to /usr/local/var/log/shopware.
Additional Symfony package configurations are stored in config/packages/shopware-available/<min-shopware-version>
and are enabled with symbolic links in config/packages/shopware-enabled. Only configurations for the installed
Shopware version are enabled. All of them are enabled during the installation.
| Configuration | Description |
|---|---|
| auto_update | Disables the auto update |
| disble_admin_worker | Disables the admin worker |
| message_bus | Sends mails via the message bus |
| update_mail_variables_on_send | Updates the mail variables on send (not in prod) |
| trusted_proxies | Uses TRUSTED_PROXIES from the environment |
| elasticsearch-disable-ssl-verification | Disables the SSL verification of OpenSearch |
| redis | Redis for cache, HTTP cache, session and lock |
| redis_cart | Redis for the cart |
| redis_increment | Redis for the increment storage |
| redis_messenger | Redis as message queue transport |
| redis_number_range | Redis for the number ranges |
Use task config:enable and task config:disable to switch them, e.g. task config:disable -- "redis*".
| Location | Description |
|---|---|
| /var/www/html | Shopware installation, document root is /var/www/html/public |
| /usr/local/share/skel.d/shopware | Shopware sources, copied to /var/www/html during the installation |
| /docker-entrypoint-install.d | Installation hooks and plugins.json |
| /usr/local/etc/install.d | Installation steps (*.sh) |
| /usr/local/share/composer | Composer home and cache directory |
| /usr/local/etc/php/apache2/conf.d | Additional loaded PHP configuring *.ini files for the Apache |
| /usr/local/etc/php/cli/conf.d | Additional loaded PHP configuring *.ini files for the CLI |
| /usr/local/etc/boot.d | Shell scripts (*.sh) executed in sorted order at container start |
| /usr/local/etc/supervisor/conf.d | Additional supervisor program configurations (*.conf) |
| /usr/local/share/permission-fixer | Shell scripts (*.sh) fixing permissions at container start |
| /usr/local/share/certs | CA (ca.pem, trusted in the container) and localhost certificate |
| /usr/local/lib/redis | Data directory of the local Redis server |
| /usr/local/var/log | Directory where all the logs go to |
| /usr/local/var/backup | Directory storing created snapshots |
The log directory contains the logs of Apache, MariaDB, Redis, Shopware and supervisor and is linked as ~/log into the home directory of the web user.
Some mapped volumes will now locate in different places.
| Old location | New location |
|---|---|
| /certs | No longer required |
| /etc/ssl/openssl.cnf | No longer required |
| /etc/apache2/sites-enabled | No longer required |
| /home/netinventors/.composer | /usr/local/share/composer |
| /usr/local/etc/php/conf.d | /usr/local/etc/php/cli/conf.d |
| /var/log/app | /usr/local/var/log |
You can run different commands directly via task in /var/www/html.
Executing task without an argument is an alias for task --list and shows the available commands.
The *:build:full commands are also available as *:build:all.
| Command | Description |
|---|---|
| frosh:adminer:install | Installs the FroshAdminer plugin |
| frosh:development-helper:install | Installs the FroshDevelopmentHelper plugin |
| frosh:mail-archive:install | Installs the FroshMailArchive plugin |
| frosh:tools:install | Installs the FroshTools plugin |
| swag:demo-data:install | Installs the SwagPlatformDemoData plugin |
| administration:install-dependencies | Installs the Administration npm dependencies |
| administration:watch | Watches for Administration changes |
| administration:build | Builds the Administration |
| administration:build:full | Installs the npm dependencies and builds the Administration |
| storefront:install-dependencies | Installs the Storefront npm dependencies |
| storefront:watch | Watches for Storefront changes |
| storefront:build | Builds the Storefront |
| storefront:build:full | Installs the npm dependencies and builds the Storefront |
| build | Builds the Storefront and the Administration |
| build:full | Installs the npm dependencies and builds the Storefront and Administration |
| plugins:build | Runs bin/build-plugins if it exists, for custom plugin builds |
| console | Runs "bin/console" Example: task console -- cache:clear |
| ci | Runs "bin/ci" Example: task ci -- cache:clear |
| bundle:dump | Creates a json file with the configuration for each active Shopware bundle |
| feature:dump | Creates json file with feature config for js testing and hot reloading capabilities |
| assets:install | Installs assets |
| theme:compile | Compiles the Storefront themes for each sales channel |
| cache:clear | Clears the cache |
| config:enable | Enables symfony package configs Example: task config:enable -- "redis*" |
| config:enable:all | Enables all symfony package configs |
| config:disable | Disables symfony package configs Example: task config:disable -- "redis*" |
| config:disable:all | Disables all symfony package configs |
| snapshot:list | Lists available snapshots |
| snapshot:create | Creates a snapshot Example: task snapshot:create -- "Comment" |
| snapshot:restore | Restores a snapshot Example: task snapshot:restore -- "810511133700" |
| snapshot:restore:files | Restores a snapshots files Example: task snapshot:restore:files -- "810511133700" |
| snapshot:restore:database | Restores a snapshots database Example: task snapshot:restore:database -- "810511133700" |
| snapshot:remove | Removes a snapshot Example: task snapshot:remove -- "810511133700" |
| snapshot:purge | Purges all snapshots |
Content type
Image
Digest
sha256:b0cf25b11…
Size
1 GB
Last updated
about 6 hours ago
docker pull netinventors/shopware