I switched a month ago to macOS as of the M1 hype and wanted to try out the entire Apple ecosystem when I have an iPhone, iPad, and Mac. To get Shopware 6 running, I looked into some Guides for Mac and found out for myself: Why is this all so complicated, and why the hell is anyone using Docker for that.
Docker on Mac
I saw that many people are using
Dockware for their Setup. (Dockware is a Docker image with all the Tools/Servers included to run Shopware 6).
Docker runs not native on macOS and uses a Virtual machine to emulate a Linux kernel and all the containers below it.
So obviously, the filesystem would be slow, and many people using, for this reason, SFTP or other tools like
docker-sync to hold the same state between host and container.
This is one of the most significant disadvantages for me. Like me, the dumb user has to run a tool to have this synchronized. I know that tools like PhpStorm can do this for me automatically, but when it doesn’t work, I will waste so much time to find this out.
- Don’t want to emulate stuff
- Don’t want to think about file sync/copying tasks
- Expect it to work without Rosetta 2 (the Intel emulation)
- Better battery usage
My current Setup
I use symfony-cli as Webserver. It is compelling and works out of the box (if you have PHP already installed) for any Symfony project. Shopware 6 is based on Symfony. We can use it without any configuration. It also has various options for:
- Enabling SSL certificates
- Different PHP Version using a
- Custom PHP configuration
- Local proxy for domains instead of ports in URL
To get started, we need to install first all packages using Homebrew.
brew install symfony-cli/tap/symfony-cli php mysql node composer
Configure MySQL (first time)
On the first installation of MySQL, you have to start MySQL first with
brew services start mysql and configure a password for MySQL using the
It would be best if you increase the
memory_limit in the
/opt/homebrew/etc/php/8.1/php.ini (or other used PHP version) to a minimum 512MB, so Shopware works better or create in your project a
Run the Webserver
As we configured PHP and MySQL, we can now just run the Webserver. We need to go to our Shopware Project folder and run
symfony server:start. The default port of the Server is 8000 and will increase if it’s already in use. In default, the command shows the Symfony log and the access log. You can also use
-d to run it in the background. See also other commands like
server:stop (Stops the background running server),
server:status (Shows the current state of the server) or
server:log for the logs. Run
symfony without arguments to see all available commands.
How to install other PHP extensions?
PHP extensions can be installed using pecl. Example:
pecl install redis
Example for Setting up a project for Contribution
Run these commands in your Terminal, and we have a running Shop of the
trunk version of Shopware 6.
# Clones Shopware 6 git clone https://github.com/shopware/platform.git cd platform # Install dependencies composer install # Create a .env file (APP_URL is by default http://localhost:8000) ./bin/console system:setup # Installs Shopware composer run setup # Start our Symnfony Webserver symfony server:start -d
Example for Setting up a project for production
# Clones Shopware 6 git clone https://github.com/shopware/production.git cd production # Install dependencies composer install # Create a .env file (APP_URL is by default http://localhost:8000) ./bin/console system:setup # Installs Shopware ./bin/console system:install --create-database --basic-setup # Start our Symnfony Webserver symfony server:start -d