Sign inSign up

netinventors/shopware

By netinventors

•Updated about 6 hours ago

Shopware 6 development images

Image
Languages & frameworks
Developer tools
Web servers
5

50K+

netinventors/shopware repository overview

⁠Shopware 6 development image

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.

⁠Available architectures

  • amd64
  • arm64

⁠Tags

TagContent
<shopware-version>, latestAll 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.

⁠Server services

The versions below refer to the images based on netinventors/php-base 1.5.0.

  • Debian Bookworm (12.15)
  • Apache 2.4.68 (mpm_prefork, mod_php, modules headers, rewrite and ssl enabled)
  • PHP versions (tags without -php<X.Y> suffix)
    • 7.3.33
    • 7.4.33
    • 8.0.30
    • 8.1.34
    • 8.2.35
    • 8.3.36
    • 8.4.27
    • 8.5.12
  • PHP modules
    • amqp
    • apcu (Apache only)
    • curl
    • gd
    • igbinary
    • imagick
    • imap
    • intl
    • mbstring
    • mcrypt
    • memcached
    • msgpack
    • mysql (mysqli, mysqlnd, pdo_mysql)
    • opcache (Apache only)
    • redis
    • soap
    • tidy
    • xdebug (Apache only, see ENABLE_XDEBUG)
    • xml
    • zip
  • AWS CLI 2.39.3
  • Symfony CLI 5.22.2
  • Composer 2.11.1 / 1.10.27
  • Cron Daemon
  • Ghostscript 10.00.0
  • ImageMagick 6.9.11-60 Q16
  • MariaDB 10.11.19 (starts optional)
  • Redis 7.0.15 (starts optional)
  • Node.js 24.22.2 (managed by n⁠ 11.0.0)
  • NPM 11.19.1
  • OpenSSH Server
  • Supervisor Daemon 4.2.5

Shopware 6.6 and 6.7 require at least PHP 8.2.

⁠Additional packages

⁠Ports

PortServiceExposed
22SSHyes
80HTTPyes
443HTTPS (self-signed certificate for localhost)yes
3306MariaDByes
6379Redisno
8080Administration watcher (PORT)no
9998Storefront 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.

⁠Customizable environment variables

All described environment variables are displayed with their default values.

⁠System
Variable nameDefault value
TZEurope/Berlin
⁠Web user

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 nameDefault value
WEB_USER_UID1000
WEB_USER_USERNAME"netinventors"
WEB_USER_PASSWORD"athene"
⁠Permission fixer

At each start the ownership and permissions of the cache, log, backup and Redis directories are fixed.

Variable nameDefault valuePossible valuesDescription
SKIP_PERMISSION_FIXER"false"
  • true
  • false
Skips the permission fixer completely
SKIP_HTML_PERMISSION_FIXER"true"
  • true
  • false
Skips the ownership fix of /var/www/html
⁠PHP

The currently available PHP versions are:

  • 7.3
  • 7.4
  • 8.0
  • 8.1
  • 8.2
  • 8.3
  • 8.4
  • 8.5

The tags with a -php<X.Y> suffix only contain one PHP version, which is also the default value of PHP_VERSION.

Variable nameDefault valuePossible 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_VERSION8.2
  • 7.3
  • 7.4
  • 8.0
  • 8.1
  • 8.2
  • 8.3
  • 8.4
  • 8.5
ENABLE_XDEBUG"true"
  • true
  • false

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:

SettingValue
memory_limit512M
max_execution_time30
post_max_size25M
upload_max_filesize25M
opcache.interned_strings_buffer20
realpath_cache_ttl3600
zend.assertions-1
⁠Composer
Variable nameDefault valuePossible values
COMPOSER_HOME/usr/local/share/composer
COMPOSER_VERSION2
  • 1
  • 2
UPDATE_COMPOSER"false"
  • true
  • false

Both versions are available as composer-1 and composer-2, composer links to the selected one.

⁠Node.js / NPM and Node.js module n
Variable nameDefault valuePossible values
NODE_VERSION24.22.2
NPM_VERSION11.19.1
UPDATE_NODE"false"
  • true
  • false
UPDATE_NPM"false"
  • true
  • false
UPDATE_N"false"
  • true
  • 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.

⁠Shopware
Variable nameDefault valuePossible valuesDescription
SHOPWARE_AUTO_INSTALL"true"
  • true
  • false
Installs Shopware at start if install.lock is missing
SHOPWARE_FORCE_INSTALL"false"
  • true
  • 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"
  • true
  • false
APP_DEBUG0
  • 0
  • 1
HOST0.0.0.0Administration watcher host
PORT8080Administration watcher port
STOREFRONT_PROXY_PORT9998Storefront watcher port
DISABLE_ADMIN_COMPILATION_TYPECHECK"true"
  • true
  • false
SHOPWARE_ADMIN_BUILD_ONLY_EXTENSIONS"true"
  • true
  • false
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD"true"
  • true
  • false
Puppeteer < 22
PUPPETEER_SKIP_DOWNLOAD"true"
  • true
  • false
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.

⁠MySQL database server

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 nameDefault value
MYSQL_HOST"localhost"
MYSQL_PORT"3306"
MYSQL_USER"netinventors"
MYSQL_PASSWORD"athene"
MYSQL_DATABASE"shopware"
⁠Redis server

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 nameDefault value
ENABLE_REDIS"false"
REDIS_HOST"localhost"
REDIS_PORT"6379"
REDIS_PASSWORD"shopware"
REDIS_DATABASE0

The local Redis server is configured with REDIS_PORT and REDIS_PASSWORD at every container start.

⁠Installation hooks

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.

StepDescription
start-mysqlStarts the local MariaDB server
create-mysql-userCreates the database and the user on the local MariaDB server
copy-sourcesCopies the Shopware sources to /var/www/html
install-shopwareInstalls Shopware, creates the admin user and the storefront
install-pluginsInstalls the plugins listed in plugins.json
stop-mysqlStops 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.

⁠Background processes

Supervisor runs the following processes:

  • Apache
  • Cron
  • SSH server
  • MariaDB (only with local MYSQL_HOST)
  • Redis (only with ENABLE_REDIS="true" and local REDIS_HOST)
  • Shopware message queue consumers (async and failed)
  • Shopware scheduled tasks

The logs of the Shopware processes are written to /usr/local/var/log/shopware.

⁠Shopware package configurations

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.

ConfigurationDescription
auto_updateDisables the auto update
disble_admin_workerDisables the admin worker
message_busSends mails via the message bus
update_mail_variables_on_sendUpdates the mail variables on send (not in prod)
trusted_proxiesUses TRUSTED_PROXIES from the environment
elasticsearch-disable-ssl-verificationDisables the SSL verification of OpenSearch
redisRedis for cache, HTTP cache, session and lock
redis_cartRedis for the cart
redis_incrementRedis for the increment storage
redis_messengerRedis as message queue transport
redis_number_rangeRedis for the number ranges

Use task config:enable and task config:disable to switch them, e.g. task config:disable -- "redis*".

⁠Directories

LocationDescription
/var/www/htmlShopware installation, document root is /var/www/html/public
/usr/local/share/skel.d/shopwareShopware sources, copied to /var/www/html during the installation
/docker-entrypoint-install.dInstallation hooks and plugins.json
/usr/local/etc/install.dInstallation steps (*.sh)
/usr/local/share/composerComposer home and cache directory
/usr/local/etc/php/apache2/conf.dAdditional loaded PHP configuring *.ini files for the Apache
/usr/local/etc/php/cli/conf.dAdditional loaded PHP configuring *.ini files for the CLI
/usr/local/etc/boot.dShell scripts (*.sh) executed in sorted order at container start
/usr/local/etc/supervisor/conf.dAdditional supervisor program configurations (*.conf)
/usr/local/share/permission-fixerShell scripts (*.sh) fixing permissions at container start
/usr/local/share/certsCA (ca.pem, trusted in the container) and localhost certificate
/usr/local/lib/redisData directory of the local Redis server
/usr/local/var/logDirectory where all the logs go to
/usr/local/var/backupDirectory 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.

⁠Breaking changes

Some mapped volumes will now locate in different places.

Old locationNew location
/certsNo longer required
/etc/ssl/openssl.cnfNo longer required
/etc/apache2/sites-enabledNo 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

⁠Taskfile

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.

⁠Available commands
CommandDescription
frosh:adminer:installInstalls the FroshAdminer plugin
frosh:development-helper:installInstalls the FroshDevelopmentHelper plugin
frosh:mail-archive:installInstalls the FroshMailArchive plugin
frosh:tools:installInstalls the FroshTools plugin
swag:demo-data:installInstalls the SwagPlatformDemoData plugin
administration:install-dependenciesInstalls the Administration npm dependencies
administration:watchWatches for Administration changes
administration:buildBuilds the Administration
administration:build:fullInstalls the npm dependencies and builds the Administration
storefront:install-dependenciesInstalls the Storefront npm dependencies
storefront:watchWatches for Storefront changes
storefront:buildBuilds the Storefront
storefront:build:fullInstalls the npm dependencies and builds the Storefront
buildBuilds the Storefront and the Administration
build:fullInstalls the npm dependencies and builds the Storefront and Administration
plugins:buildRuns bin/build-plugins if it exists, for custom plugin builds
consoleRuns "bin/console"
Example: task console -- cache:clear
ciRuns "bin/ci"
Example: task ci -- cache:clear
bundle:dumpCreates a json file with the configuration for each active Shopware bundle
feature:dumpCreates json file with feature config for js testing and hot reloading capabilities
assets:installInstalls assets
theme:compileCompiles the Storefront themes for each sales channel
cache:clearClears the cache
config:enableEnables symfony package configs
Example: task config:enable -- "redis*"
config:enable:allEnables all symfony package configs
config:disableDisables symfony package configs
Example: task config:disable -- "redis*"
config:disable:allDisables all symfony package configs
snapshot:listLists available snapshots
snapshot:createCreates a snapshot
Example: task snapshot:create -- "Comment"
snapshot:restoreRestores a snapshot
Example: task snapshot:restore -- "810511133700"
snapshot:restore:filesRestores a snapshots files
Example: task snapshot:restore:files -- "810511133700"
snapshot:restore:databaseRestores a snapshots database
Example: task snapshot:restore:database -- "810511133700"
snapshot:removeRemoves a snapshot
Example: task snapshot:remove -- "810511133700"
snapshot:purgePurges all snapshots

Tag summary

Content type

Image

Digest

sha256:b0cf25b11…

Size

1 GB

Last updated

about 6 hours ago

docker pull netinventors/shopware