Skip to content

Start Developing

Start Developing

This guide covers what to do once your development environment is running.

Your environment

Once the containers are up, you have:

  • Storefront: http://127.0.0.1:8000
  • Administration: http://127.0.0.1:8000/admin (default credentials: admin / shopware)

The development terminal user interface (TUI) (shopware-cli project dev) shows these URLs and your credentials at a glance.

Common development areas:

  • custom/ - your plugins and themes
  • bin/console - application CLI (Symfony console), runnable from your host via shopware-cli project console
  • The Administration UI

Running commands

Use shopware-cli project console to run bin/console commands from your host — Shopware CLI routes them into the web container for Docker projects:

bash
# Clear caches
shopware-cli project console cache:clear

# Install and activate a plugin
shopware-cli project console plugin:install --activate MyPlugin

# Run database migrations
shopware-cli project console database:migrate --all

For the shorter swx alias, see Running Shopware commands.

Composer, PHP, and npm

There is no Shopware CLI wrapper for arbitrary Composer commands yet. For Docker projects, run them inside the web container so you use the container PHP (memory_limit ≥ 512M) and can reach the database and other services:

bash
# Interactive shell
docker compose exec web bash

# One-off Composer commands
docker compose exec web composer require some/package
docker compose exec web composer install

Do not run composer on the host against a Docker project unless your host PHP meets Shopware's requirements (memory_limit ≥ 512M and the needed extensions). The TUI Setup health memory check reflects the container runtime, not host PHP. Details: Running Composer, PHP, and npm.

Older make-based setups

If your project still uses the older make-based workflow:

bash
make shell
# or
docker compose exec web bash

Prefer shopware-cli project console and the development TUI for console and day-to-day environment tasks.

Frontend development

When developing the Administration or Storefront, use watchers for Hot Module Replacement. Start them directly from the DevTUI Overview tab (key 1), or from the command line:

bash
# Administration (Vite HMR on port 5173)
shopware-cli project admin-watch

# Storefront (webpack HMR on port 9998)
shopware-cli project storefront-watch

To only watch specific extensions:

bash
shopware-cli project admin-watch --only-extensions MyPlugin,OtherPlugin
shopware-cli project storefront-watch --only-extensions MyPlugin,OtherPlugin

To exclude specific extensions:

bash
shopware-cli project admin-watch --skip-extensions SomePlugin

For the Storefront Watcher, the CLI prompts you to select a sales channel if one isn't configured.

When working with many third-party extensions, building only custom extensions speeds things up:

bash
shopware-cli project storefront-build --only-custom-static-extensions
shopware-cli project admin-build --only-custom-static-extensions

For more details, see Using Watchers.

Administration setup

When accessing the Administration for the first time:

  • Sign in or create a Shopware account (required to install Store extensions)
  • Connect to the Shopware Store
  • Install plugins or themes from the Store
  • Configure payment methods if needed

Basic shop settings (name, language, currency) can be changed later under Settings > Shop > Basic information.

Environment customization

compose.override.yaml

The compose.yaml file is managed by shopware-cli and regenerated automatically. Place all customizations in compose.override.yaml:

yaml
# compose.override.yaml
services:
  web:
    environment:
      APP_ENV: dev
    ports:
      - "9003:9003"   # Xdebug

  database:
    ports:
      - "3306:3306"   # Expose MySQL to host

Connecting to a remote database

To use an external database, set DATABASE_URL in .env.local:

bash
DATABASE_URL="mysql://user:password@<host>:3306/<database>"

If the container can't reach localhost, try host.docker.internal or your host's LAN IP.

Environment variables

Create a .env file in the project root to override defaults. Most changes apply immediately. Changes to APP_ENV require a restart (shopware-cli project dev stop && shopware-cli project dev start).

Shopware account and private Composer packages

To install licensed extensions from Shopware's private Composer registry, configure Composer authentication. Prefer a project-level auth.json in the project root so both host tooling and the bind-mounted web container can use it:

bash
# Writes auth.json in the project root (bind-mounted into the web container)
composer config --auth http-basic.packages.shopware.com <username> <token>

Then install packages with Composer inside the container:

bash
docker compose exec web composer require <package>

Create an access token in your Shopware account under Shops > Licenses. Do not commit auth.json.

Next steps

Was this page helpful?
UnsatisfiedSatisfied
Be the first to vote!
0.0 / 5  (0 votes)