Installing in Development mode on MacOS and Linux

Edit on GitHub

This document describes how to install Spryker in Development Mode on MacOS and Linux.

Install Docker prerequisites on MacOS and Linux

To install Docker prerequisites, follow one of the guides:

Clone a Demo Shop and the Docker SDK

  1. Open a terminal.

  2. Create a new folder and navigate into it.

  3. Depending on the desired Demo Shop:

    • Clone the B2C repository:
    git clone https://github.com/spryker-shop/b2c-demo-shop.git -b 202204.0-p1 --single-branch ./b2c-demo-shop
    
    • Clone the B2B repository:
    git clone https://github.com/spryker-shop/b2b-demo-shop.git -b 202204.0-p1 --single-branch ./b2b-demo-shop
    
  4. Depending on the repository you’ve cloned, navigate into the cloned folder:

    • B2C repository:
    cd b2c-demo-shop
    
    • B2B repository:
    cd b2b-demo-shop
    
Verification

Make sure that you are in the correct folder by running the pwd command.

  1. Clone the Docker SDK repository:
git clone https://github.com/spryker/docker-sdk.git --single-branch docker

Optional: Switch to ARM architecture

Follow the steps in this section if you are installing on a device with an ARM chip, like Apple M1. Otherwise, configure and start the instance.

Update Sass

Replace x86 based Sass with an ARM based one:

  1. In package.json, remove node-sass dependencies.
  2. Add sass and sass-loader dependencies.
...
"sass": "~1.32.13",
"sass-loader": "~10.2.0",
...
  1. Update @spryker/oryx-for-zed:
...
"@spryker/oryx-for-zed": "~2.11.5",
...
  1. In frontend/configs/development.js, add configuration for saas-loader:
loader: 'sass-loader',
options: {
   implementation: require('sass'),
}
  1. Enter the Docker SDK CLI:
docker/sdk cli
  1. Update package-lock.json and install dependencies based on your package manager:
    • npm:
    npm install
    
    • yarn:
    yarn install
    
  2. Rebuild Yves:
npm run yves
  1. Rebuild Zed
npm run zed

Update RabbitMQ and Jenkins services

In the deploy file, update RabbitMQ and Jenkins to ARM supporting versions. Example:

services:
...
    broker:
        engine: rabbitmq
        version: '3.9'
        api:
            username: 'spryker'
            password: 'secret'
        endpoints:
            queue.spryker.local:
            localhost:5672:
                protocol: tcp
...
        scheduler:
        engine: jenkins
        version: '2.324'
        endpoints:
            scheduler.spryker.local:
...

Enable Jenkins CSRF protection

  1. In the deploy file, enable the usage of the CSRF variable:
...
services:
  scheduler:
    csrf-protection-enabled: true
...
  1. In the config file, enable Jenkins CSRF protection by defining the CSRF variable:
...
$config[SchedulerJenkinsConstants::JENKINS_CONFIGURATION] = [
    SchedulerConfig::SCHEDULER_JENKINS => [
        SchedulerJenkinsConfig::SCHEDULER_JENKINS_CSRF_ENABLED => (bool)getenv('SPRYKER_JENKINS_CSRF_PROTECTION_ENABLED'),
    ],
];
...

Configure and start the instance

  1. Bootstrap local docker setup:
docker/sdk bootstrap deploy.dev.yml
Bootstrap

Once you finish the setup, you don’t need to run bootstrap to start the instance. You only need to run it after you update the Docker SDK or the deploy file.

  1. Update the hosts file:

Follow the installation instructions in the white box from the docker/sdk bootstrap command execution results to prepare the environment.

You can run docker/sdk install after bootstrap to get the list of the instructions.

  1. Once the job finishes, build and start the instance:
docker/sdk up

Depending on the hardware performance, the first project launch can take up to 20 minutes.

Endpoints

To ensure that the installation is successful, make sure you can access the configured endpoints from the Deploy file. For more information about the Deploy file, see Deploy file reference - 1.0.

RabbitMQ UI credentials

To access RabbitMQ UI, use spryker as a username and secret as a password. You can adjust the credentials in deploy.yml.

Getting the list of useful commands

To get the full and up-to-date list of commands, run docker/sdk help.

Next steps