Install Akeneo PIM for development with Docker¶
System requirements¶
docker 19+: Docker installation
docker-compose 1.24+: docker-compose installation
make
bash
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
Note
- If you are using non standard directories for Composer and Yarn, set the following environment variables:
Composer: COMPOSER_HOME
Composer cache dir: COMPOSER_CACHE_DIR
Yarn: HOST_YARN_HOME
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 \
-e COMPOSER_MEMORY_LIMIT=4G \
-v $(pwd):/srv/pim -v ~/.composer:/var/www/.composer -w /srv/pim \
akeneo/pim-php-dev:6.0 php /usr/local/bin/composer create-project \
akeneo/pim-community-standard /srv/pim "6.0.*@stable"
Note
Alternatively, you can download an archive of Akeneo PIM CE containing all the PHP dependencies here: https://download.akeneo.com/pim-community-standard-v6.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-v6.0.tar.gz
$ cd pim-enterprise-standard
$ docker run -ti -u www-data --rm \
-e COMPOSER_MEMORY_LIMIT=4G \
-v $(pwd):/srv/pim -v ~/.ssh:/var/www/.ssh -w /srv/pim \
akeneo/pim-php-dev:6.0 php /usr/local/bin/composer install
Note
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:6.0 \
/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¶
Note
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
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
Note
As the database lives inside the MySQL container, stopping it will remove all your data. You can add a docker-composer.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"
Warning
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
.
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!