Install Akeneo PIM

#Install Akeneo PIM for development with Docker

#System requirements

#Setting up your host user

The PIM is shared with the containers as a volume.

The PIM root is available as /srv/pim inside the containers.

These containers all have a default user with 1000:1000 as UID:GID. So, on Linux hosts, it is mandatory that the user of your host machine has 1000:1000 as UID and GID too. Otherwise you’ll end up with a non-working PIM.

You won’t face this problem on Mac OS and Windows hosts, as those systems use a VM between the host and Docker, which already operates with appropriate UID/GID.

#Configuring you package manager

Composer and Yarn caches are shared between the host and the containers to accelerate the installation of Akeneo PIM dependencies.

The default values defined in docker-compose.yml match the default values for the composer and yarn directories:
  • Composer: ~/.composer

  • Composer cache directory: ~/.cache/composer

  • Yarn: ~/.cache/yarn

On some older versions of Composer, the default cache director can be located at ~/.composer/cache

If you are using non standard directories for Composer and Yarn, set the following environment variables:

#Creating the PIM project

#Community Edition

The following command will create a PIM project in the current directory. Please note this directory must be empty.

$ mkdir pim
$ cd pim
$ docker run -ti -u www-data --rm \
    -v $PWD:/srv/pim -v ~/.composer:/var/www/.composer -w /srv/pim \
    akeneo/pim-php-dev:8.1 php /usr/local/bin/composer create-project \
    akeneo/pim-community-standard /srv/pim "7.0.*@stable"

Alternatively, you can download an archive of Akeneo PIM CE containing all the PHP dependencies here: https://download.akeneo.com/pim-community-standard-v7.0-latest-icecat.tar.gz

#Enterprise Edition

You need to get a PIM Enterprise Standard archive from the Partners Portal. See Portal documentation

$ tar -xvzf pim-enterprise-standard-v7.0.tar.gz
$ cd pim-enterprise-standard
$ docker run -ti -u www-data --rm \
    -v $PWD:/srv/pim -v ~/.ssh:/var/www/.ssh -w /srv/pim \
    akeneo/pim-php-dev:8.1 php /usr/local/bin/composer install

The above Docker command uses a volume to make your SSH private key available to the container, in order for it to access the distribution server.

If you are using a SSH Agent, you can as well provide a volume to access your SSH Agent from the container:

$ docker run -ti -u www-data -v $PWD:/srv/pim -v $SSH_AUTH_SOCK:/ssh-auth.sock -e SSH_AUTH_SOCK=/ssh-auth.sock -w /srv/pim --rm akeneo/pim-php-dev:8.1\
    /usr/local/bin/composer install

See https://github.com/docker-library/docs/tree/master/composer/#private-repositories–ssh-agent for more details.

#Launching the PIM in dev mode

All make commands must be run from the PIM root directory, either created by the archive or from the composer create project above.

      $ make dev
# Or
$ docker run -ti -u www-data -v $(pwd):/srv/pim -v $SSH_AUTH_SOCK:/ssh-auth.sock -e SSH_AUTH_SOCK=/ssh-auth.sock -w /srv/pim --rm akeneo/pim-php-dev:8.1 composer install
$ docker run -ti -u www-data -v $(pwd):/srv/pim -v $SSH_AUTH_SOCK:/ssh-auth.sock -e SSH_AUTH_SOCK=/ssh-auth.sock -w /srv/pim --rm akeneo/pim-php-dev:8.1 composer install

Once this command is finished, the PIM is accessible on http://localhost:8080/

#Launching the PIM in prod mode

$ make prod

Once this command is finished, the PIM is accessible on http://localhost:8080/

#Stopping the PIM

$ make down

As the database lives inside the MySQL container, stopping it will remove all your data. You can add a docker-compose.override.yml in order to have a dedicated volume for your MySQL data outside (/var/lib/mysql) of the container, in order to persist them. Same note applies as well on the Elasticsearch container (/usr/share/elasticsearch/data).

#Install and run Akeneo

#Configuring Akeneo

Akeneo PIM is configured with environment variables. The Symfony documentation explains how to use them.

#Running jobs

Akeneo PIM implements a queue for the Import and Export data jobs, as a PHP daemon. This daemon is a Symfony command, that can only execute one job at a time. It does not consume any other job until the job is finished.

You can launch several daemons to allow the execution of several jobs in parallel. A daemon checks the queue every second and executes the next job in the queue.

To launch a daemon, run the following command:

$ APP_ENV=dev make start-job-worker

If you want to execute only one job:

$ APP_ENV=dev make start-job-worker O="--limit=1"

Before stopping or destroying your containers, remember to first stop this daemon if you launched it in the background, or you’ll end up with a stuck FPM container, and will need to completely restart Docker. Please note that this command sends a stop signal to all the consumers. If a job is running while the stop signal is sent, the consumer will wait for the end of the running job before ending.

$ make stop-workers

#Xdebug

Xdebug is disabled by default, by setting the Xdebug mode to off.

You can change the mode via the XDEBUG_MODE environment variable.

See Xdebug modes documentation for a complete list of available modes.

For example, enable step debugging on fpm service:

$ XDEBUG_MODE=debug make dev

Or on a PHP CLI script:

$ XDEBUG_MODE=debug docker-compose run --rm php php my-script.php

If you are using PHPStorm, open the settings windows and go to Languages & Framework > PHP > Servers. Then add two servers name pim-docker-web and pim-docker-cli.

Configure xdebug on PHPStorm

Host: localhost Port: 8080 PIM files are located in /srv/pim on the php and fpm containers.

#Docker on production

We do not provide a fully ready Docker production image. If you want to build your own Docker production image, you can use our base image: https://hub.docker.com/r/akeneo/pim-php-base


Found a typo or a hole in the documentation and feel like contributing?
Join us on Github!