version: '3.4'

services:
  php:
    image: 'akeneo/pim-php-dev:4.0'
    environment:
      APP_ENV: '${APP_ENV:-prod}'
      COMPOSER_HOME: '/var/www/.composer'
      PHP_IDE_CONFIG: 'serverName=pim-docker-cli'
      XDEBUG_ENABLED: '${XDEBUG_ENABLED:-0}'
      XDEBUG_CONFIG: 'remote_host=172.17.0.1'
      BLACKFIRE_CLIENT_ID: '${BLACKFIRE_CLIENT_ID:-client_id}'
      BLACKFIRE_CLIENT_TOKEN: '${BLACKFIRE_CLIENT_TOKEN:-client_token}'
    volumes:
      - './:/srv/pim'
      - '${HOST_COMPOSER_HOME:-~/.composer}:/var/www/.composer'
    working_dir: '/srv/pim'
    command: 'php'
    networks:
      - 'pim'

  fpm:
    image: 'akeneo/pim-php-dev:4.0'
    environment:
      APP_ENV: '${APP_ENV:-prod}'
      BEHAT_TMPDIR: '/srv/pim/var/cache/tmp'
      BEHAT_SCREENSHOT_PATH: '/srv/pim/var/tests/screenshots'
      PHP_IDE_CONFIG: 'serverName=pim-docker-web'
      XDEBUG_ENABLED: '${XDEBUG_ENABLED:-0}'
      XDEBUG_CONFIG: 'remote_host=172.17.0.1'
      BLACKFIRE_CLIENT_ID: '${BLACKFIRE_CLIENT_ID:-client_id}'
      BLACKFIRE_CLIENT_TOKEN: '${BLACKFIRE_CLIENT_TOKEN:-client_token}'
    volumes:
      - './:/srv/pim'
    working_dir: '/srv/pim'
    command: 'php-fpm -F'
    networks:
      - 'pim'

  node:
    image: 'akeneo/node:10'
    environment:
      YARN_CACHE_FOLDER: '/home/node/.yarn'
    volumes:
      - './:/srv/pim'
      - '${HOST_YARN_CACHE_FOLDER:-~/.cache/yarn}:/home/node/.yarn'
    working_dir: '/srv/pim'
    networks:
      - 'pim'

  selenium:
    image: 'selenium/standalone-firefox-debug:2.53.1-beryllium'
    volumes:
      - './:/srv/pim:ro'
    ports:
      - '${DOCKER_PORT_SELENIUM:-5910}:5900'
    networks:
      - 'pim'

  httpd:
    image: 'httpd:2.4'
    environment:
      APP_ENV: '${APP_ENV:-prod}'
    depends_on:
      - 'fpm'
    ports:
      - '${DOCKER_PORT_HTTP:-8080}:80'
    volumes:
      - './:/srv/pim:ro'
      - './docker/httpd.conf:/usr/local/apache2/conf/httpd.conf:ro'
      - './docker/akeneo.conf:/usr/local/apache2/conf/vhost.conf:ro'
    networks:
      - 'pim'

  mysql:
    image: 'mysql:8.0.18'
    command: '--default-authentication-plugin=mysql_native_password'
    environment:
      MYSQL_ROOT_PASSWORD: 'root'
      MYSQL_USER: '${APP_DATABASE_USER}'
      MYSQL_DATABASE: '${APP_DATABASE_NAME}'
      MYSQL_PASSWORD: '${APP_DATABASE_PASSWORD}'
    ports:
      - '${DOCKER_PORT_MYSQL:-33006}:3306'
    networks:
      - 'pim'

  elasticsearch:
    image: 'docker.elastic.co/elasticsearch/elasticsearch-oss:7.5.1'
    environment:
      ES_JAVA_OPTS: '${ES_JAVA_OPTS:--Xms512m -Xmx512m}'
      discovery.type: 'single-node'
    ports:
      - '${DOCKER_PORT_ELASTICSEARCH:-9210}:9200'
    networks:
      - 'pim'

  object-storage:
    image: 'minio/minio'
    entrypoint: '/bin/sh -c "mkdir -p /data/asset /data/archive /data/catalog/ /data/jobs && minio server /data"'
    environment:
      MINIO_ACCESS_KEY: 'AKENEO_OBJECT_STORAGE_ACCESS_KEY'
      MINIO_SECRET_KEY: 'AKENEO_OBJECT_STORAGE_SECRET_KEY'
    ports:
      - '${DOCKER_PORT_OBJECT_STORAGE:-9090}:9000'
    networks:
      - 'pim'

  blackfire:
    image: blackfire/blackfire
    environment:
      BLACKFIRE_SERVER_ID: '${BLACKFIRE_SERVER_ID:-server_id}'
      BLACKFIRE_SERVER_TOKEN: '${BLACKFIRE_SERVER_TOKEN:-server_token}'
    networks:
      - 'pim'

networks:
  pim:
